aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/locking
diff options
context:
space:
mode:
authorWolfram Sang <wsa@the-dreams.de>2018-10-11 23:07:30 +0200
committerWolfram Sang <wsa@the-dreams.de>2018-10-11 23:07:30 +0200
commit90fb814b6c025da45f71db1703cffe3fe87f575c (patch)
tree5fd739d407654df6f9d6e82900a45e027dd8b9f0 /kernel/locking
parenti2c: designware: Set IRQF_NO_SUSPEND flag for all BYT and CHT controllers (diff)
parentLinux 4.19-rc7 (diff)
downloadlinux-dev-90fb814b6c025da45f71db1703cffe3fe87f575c.tar.xz
linux-dev-90fb814b6c025da45f71db1703cffe3fe87f575c.zip
Merge tag 'v4.19-rc7' into i2c/for-4.20
This is the 4.19-rc7 release
Diffstat (limited to 'kernel/locking')
-rw-r--r--kernel/locking/test-ww_mutex.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/locking/test-ww_mutex.c b/kernel/locking/test-ww_mutex.c
index 0be047dbd897..65a3b7e55b9f 100644
--- a/kernel/locking/test-ww_mutex.c
+++ b/kernel/locking/test-ww_mutex.c
@@ -260,7 +260,7 @@ static void test_cycle_work(struct work_struct *work)
{
struct test_cycle *cycle = container_of(work, typeof(*cycle), work);
struct ww_acquire_ctx ctx;
- int err;
+ int err, erra = 0;
ww_acquire_init(&ctx, &ww_class);
ww_mutex_lock(&cycle->a_mutex, &ctx);
@@ -270,17 +270,19 @@ static void test_cycle_work(struct work_struct *work)
err = ww_mutex_lock(cycle->b_mutex, &ctx);
if (err == -EDEADLK) {
+ err = 0;
ww_mutex_unlock(&cycle->a_mutex);
ww_mutex_lock_slow(cycle->b_mutex, &ctx);
- err = ww_mutex_lock(&cycle->a_mutex, &ctx);
+ erra = ww_mutex_lock(&cycle->a_mutex, &ctx);
}
if (!err)
ww_mutex_unlock(cycle->b_mutex);
- ww_mutex_unlock(&cycle->a_mutex);
+ if (!erra)
+ ww_mutex_unlock(&cycle->a_mutex);
ww_acquire_fini(&ctx);
- cycle->result = err;
+ cycle->result = err ?: erra;
}
static int __test_cycle(unsigned int nthreads)