• Steve Langasek's avatar
    [PATCH] __cmpxchg() must really always be inlined on alpha · c00a76ae
    Steve Langasek authored
    With the latest 2.6.15 kernel builds for alpha on Debian, we ran into a
    problem with undefined references to __cmpxchg_called_with_bad_pointer() in
    a couple of kernel modules (xfs.ko and drm.ko; see
    http://bugs.debian.org/347556).
    
    It looks like people have been trying to out-clever each other wrt the
    definition of "inline" on this architecture :), with the result that
    __cmpxchg(), which must be inlined so the compiler can see its argument is
    const, is not guaranteed to be inlined.  Indeed, it was not being inlined
    when building with -Os.
    
    The attached patch fixes the issue by adding an
    __attribute__((always_inline)) explicitly to the definition of __cmpxchg()
    instead of relying on redefines of "inline" elsewhere to make this happen.
    
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    c00a76ae
system.h 16.8 KB