lkml.org 
[lkml]   [2012]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] x86: fix atomic64_xxx_cx8() functions
    From
    Date
    It appears about all functions in arch/x86/lib/atomic64_cx8_32.S are
    wrong in case cmpxchg8b must be restarted, because LOCK_PREFIX macro
    defines a label "1" clashing with other local labels :

    1:
    some_instructions
    LOCK_PREFIX
    cmpxchg8b (%ebp)
    jne 1b / jumps to beginning of LOCK_PREFIX !

    A possible fix is to use a magic label "672" in LOCK_PREFIX asm
    definition, similar to the "671" one we defined in LOCK_PREFIX_HERE.

    Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
    Acked-by: Jan Beulich <JBeulich@suse.com>
    CC: Christoph Lameter <cl@linux.com>
    CC: Ingo Molnar <mingo@elte.hu>
    CC: H. Peter Anvin <hpa@zytor.com>
    Cc: stable@vger.kernel.org [2.6.35+]
    ---
    arch/x86/include/asm/alternative-asm.h | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/include/asm/alternative-asm.h b/arch/x86/include/asm/alternative-asm.h
    index 091508b..952bd01 100644
    --- a/arch/x86/include/asm/alternative-asm.h
    +++ b/arch/x86/include/asm/alternative-asm.h
    @@ -4,10 +4,10 @@

    #ifdef CONFIG_SMP
    .macro LOCK_PREFIX
    -1: lock
    +672: lock
    .section .smp_locks,"a"
    .balign 4
    - .long 1b - .
    + .long 672b - .
    .previous
    .endm
    #else



    \
     
     \ /
      Last update: 2012-01-03 17:39    [W:0.019 / U:60.968 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site