This is a note to let you know that I've just added the patch titled futex: Use smp_store_release() in mark_wake_futex() to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: futex-use-smp_store_release-in-mark_wake_futex.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Mon Mar 29 07:48:09 AM CEST 2021 From: Ben Hutchings <ben@xxxxxxxxxxxxxxx> Date: Sun, 28 Mar 2021 22:40:54 +0200 Subject: futex: Use smp_store_release() in mark_wake_futex() To: stable@xxxxxxxxxxxxxxx Cc: Lee Jones <lee.jones@xxxxxxxxxx>, "Luis Claudio R. Goncalves" <lgoncalv@xxxxxxxxxx>, Florian Fainelli <f.fainelli@xxxxxxxxx> Message-ID: <YGDp1qJOCUJmE1Ty@xxxxxxxxxxxxxxx> Content-Disposition: inline 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> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- kernel/futex.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --- a/kernel/futex.c +++ b/kernel/futex.c @@ -1565,8 +1565,7 @@ static void mark_wake_futex(struct wake_ * 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); } /* Patches currently in stable-queue which might be from ben@xxxxxxxxxxxxxxx are queue-4.9/futex-drop-hb-lock-before-enqueueing-on-the-rtmutex.patch queue-4.9/futex-rework-futex_lock_pi-to-use-rt_mutex_-_proxy_lock.patch queue-4.9/futex-avoid-freeing-an-active-timer.patch queue-4.9/futex-rt_mutex-introduce-rt_mutex_init_waiter.patch queue-4.9/futex-fix-incorrect-should_fail_futex-handling.patch queue-4.9/futex-rt_mutex-fix-rt_mutex_cleanup_proxy_lock.patch queue-4.9/futex-use-smp_store_release-in-mark_wake_futex.patch queue-4.9/futex-fix-possible-missed-wakeup.patch queue-4.9/locking-futex-allow-low-level-atomic-operations-to-return-eagain.patch queue-4.9/futex-prevent-robust-futex-exit-race.patch queue-4.9/futex-handle-transient-ownerless-rtmutex-state-correctly.patch queue-4.9/futex-handle-early-deadlock-return-correctly.patch queue-4.9/arm64-futex-bound-number-of-ldxr-stxr-loops-in-futex_wake_op.patch