On Tue, Dec 13, 2016 at 09:36:40AM +0100, Peter Zijlstra wrote: > Thomas spotted that fixup_pi_state_owner() can return errors and we > fail to unlock the rt_mutex in that case. >
We handled this explicitly before Patch 1/10, so can this be rolled into 1/10 (er 9) as a single commit? > Reported-by: Thomas Gleixner <[email protected]> > Signed-off-by: Peter Zijlstra (Intel) <[email protected]> > --- > kernel/futex.c | 2 ++ > 1 file changed, 2 insertions(+) > > --- a/kernel/futex.c > +++ b/kernel/futex.c > @@ -2896,6 +2896,8 @@ static int futex_wait_requeue_pi(u32 __u > 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. > > > -- Darren Hart Intel Open Source Technology Center

