• David Howells's avatar
    UAPI: fix endianness conditionals in linux/raid/md_p.h · ca044f9a
    David Howells authored
    In the UAPI header files, __BIG_ENDIAN and __LITTLE_ENDIAN must be
    compared against __BYTE_ORDER in preprocessor conditionals where these are
    exposed to userspace (that is they're not inside __KERNEL__ conditionals).
    
    However, in the main kernel the norm is to check for
    "defined(__XXX_ENDIAN)" rather than comparing against __BYTE_ORDER and
    this has incorrectly leaked into the userspace headers.
    
    The definition of struct mdp_superblock_s in linux/raid/md_p.h is wrong in
    this way.  Note that userspace will likely interpret the ordering of the
    fields incorrectly as the big-endian variant on a little-endian machines -
    depending on header inclusion order.
    
    [!!!] NOTE [!!!]  This patch may adversely change the userspace API.  It might
    be better to fix the ordering of events_hi, events_lo, cp_events_hi and
    cp_events_lo in struct mdp_superblock_s / typedef mdp_super_t.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Acked-by: default avatarNeilBrown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ca044f9a
md_p.h 11.4 KB