|
@@ -2755,6 +2755,11 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
|
|
if (q.pi_state && (q.pi_state->owner != current)) {
|
|
if (q.pi_state && (q.pi_state->owner != current)) {
|
|
spin_lock(q.lock_ptr);
|
|
spin_lock(q.lock_ptr);
|
|
ret = fixup_pi_state_owner(uaddr2, &q, current);
|
|
ret = fixup_pi_state_owner(uaddr2, &q, current);
|
|
|
|
+ /*
|
|
|
|
+ * Drop the reference to the pi state which
|
|
|
|
+ * the requeue_pi() code acquired for us.
|
|
|
|
+ */
|
|
|
|
+ free_pi_state(q.pi_state);
|
|
spin_unlock(q.lock_ptr);
|
|
spin_unlock(q.lock_ptr);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|