summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2017-03-22 11:32:47 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-22 11:32:47 +0000
commitc3b48399e06afceb62ef1dbd2d9c73cee35d5871 (patch)
tree14c09d94eec8ffe617eb068db333d3cd945dce5a /kernel
parent2b31ed1f9285d9560d70170cc04a83c197f0ec8c (diff)
parent99d403faba47e5adeb11dbf1094972fc78c29a75 (diff)
futex: Add missing error handling to FUTEX_REQUEUE_PI
am: 99d403faba Change-Id: I7d99bd76a3d1cd329295b157eb179fc194029c5d
Diffstat (limited to 'kernel')
-rw-r--r--kernel/futex.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/futex.c b/kernel/futex.c
index 45170163a0b3..3057dabf726f 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -2773,6 +2773,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
if (q.pi_state && (q.pi_state->owner != current)) {
spin_lock(q.lock_ptr);
ret = fixup_pi_state_owner(uaddr2, &q, current);
+ if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current)
+ rt_mutex_unlock(&q.pi_state->pi_mutex);
/*
* Drop the reference to the pi state which
* the requeue_pi() code acquired for us.