[lkml]   [2015]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH] futex: Prevent pi_state from double freeing in case of error
On Fri, 18 Dec 2015, wrote:

>From: Bhuvanesh Surachari <>
>In case of error from rt_mutex_start_proxy_lock pi_state is freed
>twice in futex_requeue function. Hence removing free_pi_state in
>else branch and branching to the location where pi_state is freed.

This reads weird.

Do note that free_pi_state is already protected against passing it a nil
pi_state, so this is merely cosmetic.

Hmm but yeah, looks legit. The cases were we free the pi_state on error
are when doing retry kind of paths, EDEADLK not being one of those cases.

>Signed-off-by: Bhuvanesh Surachari <>
>Signed-off-by: Andy Lowe <>

This last SoB tag is incorrect, Andy Lowe is not carrying the patch for you.

> kernel/futex.c | 1 -
> 1 file changed, 1 deletion(-)
>diff --git a/kernel/futex.c b/kernel/futex.c
>index 684d754..264b3f2 100644
>--- a/kernel/futex.c
>+++ b/kernel/futex.c
>@@ -1815,7 +1815,6 @@ retry_private:
> } else if (ret) {
> /* -EDEADLK */
> this->pi_state = NULL;
>- free_pi_state(pi_state);
> goto out_unlock;
> }
> }

Nit but I think we also want to set pi_state to nil after freeing it
in out_unlock. That way this scenario would simply be goto out_unlock.


 \ /
  Last update: 2015-12-18 16:01    [W:0.095 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site