Hi

On Donnerstag, 7. Februar 2008, Greg KH wrote:
> 2.6.24-stable review patch.  If anyone has any objections, please let us know.
> 
> ------------------
> From: Thomas Gleixner <[EMAIL PROTECTED]>
> 
> The exception fixup for the futex macros __futex_atomic_op1/2 and
> futex_atomic_cmpxchg_inatomic() is missing an entry when the lock
> prefix is replaced by a NOP via SMP alternatives.
> 
> Chuck Ebert tracked this down from the information provided in:
> https://bugzilla.redhat.com/show_bug.cgi?id=429412
> 
> A possible solution would be to add another fixup after the
> LOCK_PREFIX, so both the LOCK and NOP case have their own entry in the
> exception table, but it's not really worth the trouble.
> 
> Simply replace LOCK_PREFIX with lock and keep those untouched by SMP
> alternatives.
> 
> Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
> 
> ---
>  include/asm-x86/futex_32.h |    6 +++---
>  include/asm-x86/futex_64.h |    6 +++---
>  2 files changed, 6 insertions(+), 6 deletions(-)

This patch seems to break compilation on x86_64 (i386 builds fine).

[...]
  CC      kernel/time/tick-sched.o
  LD      kernel/time/built-in.o
  CC      kernel/futex.o
In file included from include/asm/futex.h:4,
                 from kernel/futex.c:59:
include/asm/futex_64.h: In function ‘futex_atomic_op_inuser’:
include/asm/futex_64.h:69: error: expected ‘:’ or ‘)’ before ‘lock’
include/asm/futex_64.h:69: error: stray ‘\’ in program
In file included from include/asm/futex.h:4,
                 from kernel/futex.c:59:
include/asm/futex_64.h:69:61: error: invalid suffix "b" on integer constant
include/asm/futex_64.h:69: error: stray ‘\’ in program
include/asm/futex_64.h:69: error: stray ‘\’ in program
include/asm/futex_64.h:72: error: expected ‘:’ or ‘)’ before ‘lock’
include/asm/futex_64.h:72: error: stray ‘\’ in program
include/asm/futex_64.h:72:63: error: invalid suffix "b" on integer constant
include/asm/futex_64.h:72: error: stray ‘\’ in program
include/asm/futex_64.h:72: error: stray ‘\’ in program
include/asm/futex_64.h:75: error: expected ‘:’ or ‘)’ before ‘lock’
include/asm/futex_64.h:75: error: stray ‘\’ in program
include/asm/futex_64.h:75:62: error: invalid suffix "b" on integer constant
include/asm/futex_64.h:75: error: stray ‘\’ in program
include/asm/futex_64.h:75: error: stray ‘\’ in program
include/asm/futex_64.h:51: warning: unused variable ‘tem’
make[1]: *** [kernel/futex.o] Fehler 1
make: *** [kernel] Fehler 2

Tested on current debian-amd64/ unstable.
ii  binutils                                           2.18.1~cvs20080103-1     
  The GNU assembler, linker and binary utiliti
ii  gcc-4.2                                            4.2.3-1                  
  The GNU C compiler
ii  gcc-4.2-base                                       4.2.3-1                  
  The GNU Compiler Collection (base package)

[...]
> --- a/include/asm-x86/futex_64.h
> +++ b/include/asm-x86/futex_64.h
> @@ -27,7 +27,7 @@
>  "1:  movl    %2, %0\n\
>       movl    %0, %3\n"                                       \
>       insn "\n"                                               \
> -"2:  " LOCK_PREFIX "cmpxchgl %3, %2\n\
> +"2:  "lock cmpxchgl %3, %2\n\
>       jnz     1b\n\
>  3:   .section .fixup,\"ax\"\n\
>  4:   mov     %5, %1\n\
> @@ -62,7 +62,7 @@ futex_atomic_op_inuser (int encoded_op, 
>               __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
>               break;
>       case FUTEX_OP_ADD:
> -             __futex_atomic_op1(LOCK_PREFIX "xaddl %0, %2", ret, oldval,
> +             __futex_atomic_op1("lock xaddl %0, %2", ret, oldval,
>                                  uaddr, oparg);
>               break;
>       case FUTEX_OP_OR:
> @@ -101,7 +101,7 @@ futex_atomic_cmpxchg_inatomic(int __user
>               return -EFAULT;
>  
>       __asm__ __volatile__(
> -             "1:     " LOCK_PREFIX "cmpxchgl %3, %1          \n"
> +             "1:     lock cmpxchgl %3, %1                    \n"
>  
>               "2:     .section .fixup, \"ax\"                 \n"
>               "3:     mov     %2, %0                          \n"

Regards
        Stefan Lippers-Hollmann

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to