• L
    Fix 'ALIGN()' macro, take 2 · 2ea58144
    Linus Torvalds 提交于
    You wouldn't think that doing an ALIGN() macro that aligns something up
    to a power-of-two boundary would be likely to have bugs, would you?
    
    But hey, in the wonderful world of mixing integer types, you have to be
    careful.  This just makes sure that the alignment is interpreted in the
    same type as the thing to be aligned.
    
    Thanks to Roland Dreier, who noticed that the amso1100 driver got broken
    by the previous fix (that just extended the mask to "unsigned long", but
    was still broken in "unsigned long long" - it just happened to be the
    same on 64-bit architectures).
    
    See commit 4c8bd7ee for the history of
    bugs here...
    Acked-by: NRoland Dreier <rdreier@cisco.com>
    Cc: Andrew Morton <akpm@osdl.org>
    Cc: David Miller <davem@davemloft.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    2ea58144
kernel.h 10.8 KB