Re: [PATCH 01/13] futex: Use smp_store_release() in mark_wake_futex()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux