|
|
@@ -2898,6 +2898,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.
|