lkml.org 
[lkml]   [2019]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 4.9 00/42] 4.9.188-stable review
    Greg Kroah-Hartman wrote:
    > On Mon, Aug 05, 2019 at 11:11:01PM +0300, Jari Ruusu wrote:
    > > Peter Zijlstra's "x86/atomic: Fix smp_mb__{before,after}_atomic()"
    > > upstream commit 69d927bba39517d0980462efc051875b7f4db185 seems to
    > > be missing/lost from 4.9 and older stable kernels.
    >
    > Can you send properly backported and tested patches?

    linux-4.4 backport of "x86/atomic: Fix smp_mb__{before,after}_atomic()".
    Tested.

    Signed-off-by: Jari Ruusu <jari.ruusu@gmail.com>

    --- a/arch/x86/include/asm/atomic.h
    +++ b/arch/x86/include/asm/atomic.h
    @@ -49,7 +49,7 @@
    {
    asm volatile(LOCK_PREFIX "addl %1,%0"
    : "+m" (v->counter)
    - : "ir" (i));
    + : "ir" (i) : "memory");
    }

    /**
    @@ -63,7 +63,7 @@
    {
    asm volatile(LOCK_PREFIX "subl %1,%0"
    : "+m" (v->counter)
    - : "ir" (i));
    + : "ir" (i) : "memory");
    }

    /**
    @@ -89,7 +89,7 @@
    static __always_inline void atomic_inc(atomic_t *v)
    {
    asm volatile(LOCK_PREFIX "incl %0"
    - : "+m" (v->counter));
    + : "+m" (v->counter) :: "memory");
    }

    /**
    @@ -101,7 +101,7 @@
    static __always_inline void atomic_dec(atomic_t *v)
    {
    asm volatile(LOCK_PREFIX "decl %0"
    - : "+m" (v->counter));
    + : "+m" (v->counter) :: "memory");
    }

    /**
    --- a/arch/x86/include/asm/atomic64_64.h
    +++ b/arch/x86/include/asm/atomic64_64.h
    @@ -44,7 +44,7 @@
    {
    asm volatile(LOCK_PREFIX "addq %1,%0"
    : "=m" (v->counter)
    - : "er" (i), "m" (v->counter));
    + : "er" (i), "m" (v->counter) : "memory");
    }

    /**
    @@ -58,7 +58,7 @@
    {
    asm volatile(LOCK_PREFIX "subq %1,%0"
    : "=m" (v->counter)
    - : "er" (i), "m" (v->counter));
    + : "er" (i), "m" (v->counter) : "memory");
    }

    /**
    @@ -85,7 +85,7 @@
    {
    asm volatile(LOCK_PREFIX "incq %0"
    : "=m" (v->counter)
    - : "m" (v->counter));
    + : "m" (v->counter) : "memory");
    }

    /**
    @@ -98,7 +98,7 @@
    {
    asm volatile(LOCK_PREFIX "decq %0"
    : "=m" (v->counter)
    - : "m" (v->counter));
    + : "m" (v->counter) : "memory");
    }

    /**
    --- a/arch/x86/include/asm/barrier.h
    +++ b/arch/x86/include/asm/barrier.h
    @@ -116,7 +116,7 @@
    #endif

    /* Atomic operations are already serializing on x86 */
    -#define smp_mb__before_atomic() barrier()
    -#define smp_mb__after_atomic() barrier()
    +#define smp_mb__before_atomic() do { } while (0)
    +#define smp_mb__after_atomic() do { } while (0)

    #endif /* _ASM_X86_BARRIER_H */
    --
    Jari Ruusu 4096R/8132F189 12D6 4C3A DCDA 0AA4 27BD ACDF F073 3C80 8132 F189

    \
     
     \ /
      Last update: 2019-08-06 06:21    [W:5.135 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site