On Mon, May 23, 2016 at 3:16 PM, Emese Revfy <re.emese@xxxxxxxxx> wrote: > These functions have been selected because they are init functions or > are called at random times or they have variable loops. > > Based on work created by the PaX Team. > > Signed-off-by: Emese Revfy <re.emese@xxxxxxxxx> > [...] > --- a/include/linux/compiler-gcc.h > +++ b/include/linux/compiler-gcc.h > @@ -188,6 +188,11 @@ > #endif /* GCC_VERSION >= 40300 */ > > #if GCC_VERSION >= 40500 > + > +#ifdef LATENT_ENTROPY_PLUGIN > +#define __latent_entropy __attribute__((latent_entropy)) > +#endif This deserves a full comment above it to describe its purpose and use for when people go trying to figure out what it is and where to use it. The commit message is a bit terse, so I'd try to expand both to describe what function characteristics a developer should look for to mark something with __latent_entropy. > + > /* > * Mark a position in code as unreachable. This can be used to > * suppress control flow warnings after asm blocks that transfer > [...] > diff --git a/include/linux/init.h b/include/linux/init.h > index aedb254..68df2c3 100644 > --- a/include/linux/init.h > +++ b/include/linux/init.h > @@ -37,9 +37,15 @@ > * section. > */ > > +#ifdef CONFIG_MEMORY_HOTPLUG > +#define add_meminit_latent_entropy > +#else > +#define add_meminit_latent_entropy __latent_entropy > +#endif > + > /* These are for everybody (although not all archs will actually > discard it in modules) */ > -#define __init __section(.init.text) __cold notrace > +#define __init __section(.init.text) __cold notrace __latent_entropy > #define __initdata __section(.init.data) > #define __initconst __constsection(.init.rodata) > #define __exitdata __section(.exit.data) > @@ -92,7 +98,7 @@ > #define __exit __section(.exit.text) __exitused __cold notrace > > /* Used for MEMORY_HOTPLUG */ > -#define __meminit __section(.meminit.text) __cold notrace > +#define __meminit __section(.meminit.text) __cold notrace add_meminit_latent_entropy > #define __meminitdata __section(.meminit.data) > #define __meminitconst __constsection(.meminit.rodata) > #define __memexit __section(.memexit.text) __exitused __cold notrace I was confused by these defines. :) Maybe "add_meminit_latent_entropy" should be named "__memory_hotplug_only_latent_entropy" or something like that? -Kees -- Kees Cook Chrome OS & Brillo Security -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>