]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - kernel/futex.c
futex: Add missing error handling to FUTEX_REQUEUE_PI
[mirror_ubuntu-zesty-kernel.git] / kernel / futex.c
index 2ee58c4fc49c212aa4ec75f1f184f7a6824c3b20..dda00f03337d683d7dfd883f9c19f94f8bc1dc97 100644 (file)
@@ -2896,6 +2896,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.