Re: [PATCH -v4 02/10] futex: Add missing error handling to FUTEX_REQUEUE_PI

From: Darren Hart
Date: Fri Dec 16 2016 - 19:07:03 EST


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 <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> ---
> 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