On Mon, Apr 29, 2019 at 10:14:58PM +0200, Andrea Parri wrote:
> This barrier only applies to the read-modify-write operations; in
> particular, it does not apply to the atomic_set() primitive.
> 
> Replace the barrier with an smp_mb().
> 
> Fixes: dac56212e8127 ("bio: skip atomic inc/dec of ->bi_cnt for most use 
> cases")
> Cc: [email protected]
> Reported-by: "Paul E. McKenney" <[email protected]>
> Reported-by: Peter Zijlstra <[email protected]>
> Signed-off-by: Andrea Parri <[email protected]>
> Cc: Jens Axboe <[email protected]>
> Cc: [email protected]
> ---
>  include/linux/bio.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/bio.h b/include/linux/bio.h
> index e584673c18814..5becbafb84e8a 100644
> --- a/include/linux/bio.h
> +++ b/include/linux/bio.h
> @@ -224,7 +224,7 @@ static inline void bio_cnt_set(struct bio *bio, unsigned 
> int count)
>  {
>       if (count != 1) {
>               bio->bi_flags |= (1 << BIO_REFFED);
> -             smp_mb__before_atomic();
> +             smp_mb();
>       }
>       atomic_set(&bio->__bi_cnt, count);
>  }
> -- 
> 2.7.4
> 

Looks fine,

Reviewed-by: Ming Lei <[email protected]>

Thanks,
Ming

Reply via email to