Re: Fw: asm-x86/byteorder.h, CONFIG_X86_BSWAP leaks to userland

From: H. Peter Anvin
Date: Sat Jul 26 2008 - 12:50:10 EST


Harvey Harrison wrote:

An undefined CONFIG_foo defaults to 0 (I think), so bswap is never used.
Is this done on purpose, or can the CONFIG_ foo be moved inside
__KERNEL__ somehow?

I believe it's there to prevent the bswap instruction from being used on
early x86_32 models (i386/i486). As this will be 0 in userspace it is
effectively never using the bswap instruction for these routines.


i386, specifically.

However, you shouldn't leak these symbols to userspace; there is a warning option in gcc for undefined macros, and it's a *good thing* to use it. Causing warnings in user space is not nice.

I'm not sure if it's time yet to make the bswap ones be exported, as they
would no longer be usable for those early machines. X86 guys CC:d.

On i386 we still default to i386-compatible binaries; I *think* gcc has macros telling you if the user has used -march=i486 etc.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/