*** BLURB HERE ***
Peter Zijlstra (1): futex: Fix OWNER_DEAD fixup
kernel/futex.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
From: Peter Zijlstra peterz@infradead.org
commit a97cb0e7b3f4c6297fd857055ae8e895f402f501 upstream.
Both Geert and DaveJ reported that the recent futex commit:
c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex")
introduced a problem with setting OWNER_DEAD. We set the bit on an uninitialized variable and then entirely optimize it away as a dead-store.
Move the setting of the bit to where it is more useful.
Reported-by: Geert Uytterhoeven geert@linux-m68k.org Reported-by: Dave Jones davej@codemonkey.org.uk Signed-off-by: Peter Zijlstra (Intel) peterz@infradead.org Cc: Andrew Morton akpm@linux-foundation.org Cc: Linus Torvalds torvalds@linux-foundation.org Cc: Paul E. McKenney paulmck@us.ibm.com Cc: Peter Zijlstra peterz@infradead.org Cc: Thomas Gleixner tglx@linutronix.de Fixes: c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex") Link: http://lkml.kernel.org/r/20180122103947.GD2228@hirez.programming.kicks-ass.n... Signed-off-by: Ingo Molnar mingo@kernel.org Signed-off-by: Zheng Yejian zhengyejian1@huawei.com --- kernel/futex.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/kernel/futex.c b/kernel/futex.c index 199e63c5b612..70ad21bbb1d5 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -2248,10 +2248,6 @@ static int __fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q,
oldowner = pi_state->owner;
- /* Owner died? */ - if (!pi_state->owner) - newtid |= FUTEX_OWNER_DIED; - /* * We are here because either: * @@ -2309,6 +2305,9 @@ retry: }
newtid = task_pid_vnr(newowner) | FUTEX_WAITERS; + /* Owner died? */ + if (!pi_state->owner) + newtid |= FUTEX_OWNER_DIED;
if (get_futex_value_locked(&uval, uaddr)) goto handle_fault;
On Mon, Feb 22, 2021 at 12:06:18PM +0800, Zheng Yejian wrote:
From: Peter Zijlstra peterz@infradead.org
commit a97cb0e7b3f4c6297fd857055ae8e895f402f501 upstream.
Why is this not also needed in 4.9.y? If so, please also provide a backport there so I can apply this one too.
thanks,
greg k-h
On 2021/2/22 18:16, Greg KH wrote:
On Mon, Feb 22, 2021 at 12:06:18PM +0800, Zheng Yejian wrote:
From: Peter Zijlstra peterz@infradead.org
commit a97cb0e7b3f4c6297fd857055ae8e895f402f501 upstream.
Why is this not also needed in 4.9.y? If so, please also provide a backport there so I can apply this one too.
I've sent a backport for 4.9.y, please review it. Thanks~
On 2021/2/22 14:40, Greg KH wrote:
On Mon, Feb 22, 2021 at 12:06:17PM +0800, Zheng Yejian wrote:
*** BLURB HERE ***
No blurb? Why is this needed?
.
This patch may fix the following bug:
Link: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/kernel...
> static int __fixup_pi_state_owner(u32 __user *uaddr, struct futex_q *q, > struct task_struct *argowner) > { > struct futex_pi_state *pi_state = q->pi_state; > struct task_struct *oldowner, *newowner; > u32 uval, curval, newval, newtid; > int err = 0; > > oldowner = pi_state->owner; > > /* Owner died? */ > if (!pi_state->owner) > newtid |= FUTEX_OWNER_DIED; Variable "newtid" is used without initialized.
On Mon, 22 Feb 2021, Zheng Yejian wrote:
*** BLURB HERE ***
You need to replace this place-holder with your own description of the problem, how it's being solved and why this particular solution was selected.
Peter Zijlstra (1): futex: Fix OWNER_DEAD fixup
To clarify, this *is* the right fix. Thanks for taking the time.
kernel/futex.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
Reviewed-by: Lee Jones lee.jones@linaro.org
On Mon, Feb 22, 2021 at 08:43:18AM +0000, Lee Jones wrote:
On Mon, 22 Feb 2021, Zheng Yejian wrote:
*** BLURB HERE ***
You need to replace this place-holder with your own description of the problem, how it's being solved and why this particular solution was selected.
Peter Zijlstra (1): futex: Fix OWNER_DEAD fixup
To clarify, this *is* the right fix. Thanks for taking the time.
kernel/futex.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
Reviewed-by: Lee Jones lee.jones@linaro.org
Now queued up, thanks.
greg k-h
linux-stable-mirror@lists.linaro.org