On Sun, Mar 28, 2021 at 10:40:54PM +0200, Ben Hutchings wrote: > From: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > commit 1b367ece0d7e696cab1c8501bab282cc6a538b3f upstream. > > Since the futex_q can dissapear the instruction after assigning NULL, > this really should be a RELEASE barrier. That stops loads from hitting > dead memory too. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > Cc: juri.lelli@xxxxxxx > Cc: bigeasy@xxxxxxxxxxxxx > Cc: xlpang@xxxxxxxxxx > Cc: rostedt@xxxxxxxxxxx > Cc: mathieu.desnoyers@xxxxxxxxxxxx > Cc: jdesfossez@xxxxxxxxxxxx > Cc: dvhart@xxxxxxxxxxxxx > Cc: bristot@xxxxxxxxxx > Link: http://lkml.kernel.org/r/20170322104151.604296452@xxxxxxxxxxxxx > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> > --- > kernel/futex.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/kernel/futex.c b/kernel/futex.c > index 796b1c860839..e112a9d4c84f 100644 > --- a/kernel/futex.c > +++ b/kernel/futex.c > @@ -1565,8 +1565,7 @@ static void mark_wake_futex(struct wake_q_head *wake_q, struct futex_q *q) > * memory barrier is required here to prevent the following > * store to lock_ptr from getting ahead of the plist_del. > */ > - smp_wmb(); > - q->lock_ptr = NULL; > + smp_store_release(&q->lock_ptr, NULL); > } > > /* > All now queued up, thanks. greg k-h