diff options
author | Kees Cook <keescook@chromium.org> | 2022-05-03 13:55:00 -0700 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2022-05-08 01:33:06 -0700 |
commit | 595b893e2087de306d0781795fb8ec47873596a6 (patch) | |
tree | e2331cc2b11ad02e5d6cb20dca176b9ccbb819e8 /include/linux/compiler_types.h | |
parent | d3646589703731026ae7bcba5731fa7a7d0e5291 (diff) | |
download | linux-595b893e2087de306d0781795fb8ec47873596a6.tar.gz linux-595b893e2087de306d0781795fb8ec47873596a6.tar.bz2 linux-595b893e2087de306d0781795fb8ec47873596a6.zip |
randstruct: Reorganize Kconfigs and attribute macros
In preparation for Clang supporting randstruct, reorganize the Kconfigs,
move the attribute macros, and generalize the feature to be named
CONFIG_RANDSTRUCT for on/off, CONFIG_RANDSTRUCT_FULL for the full
randomization mode, and CONFIG_RANDSTRUCT_PERFORMANCE for the cache-line
sized mode.
Cc: linux-hardening@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20220503205503.3054173-4-keescook@chromium.org
Diffstat (limited to 'include/linux/compiler_types.h')
-rw-r--r-- | include/linux/compiler_types.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index 1c2c33ae1b37..d08dfcb0ac68 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -242,15 +242,15 @@ struct ftrace_likely_data { # define __latent_entropy #endif -#ifndef __randomize_layout +#if defined(RANDSTRUCT) && !defined(__CHECKER__) +# define __randomize_layout __designated_init __attribute__((randomize_layout)) +# define __no_randomize_layout __attribute__((no_randomize_layout)) +/* This anon struct can add padding, so only enable it under randstruct. */ +# define randomized_struct_fields_start struct { +# define randomized_struct_fields_end } __randomize_layout; +#else # define __randomize_layout __designated_init -#endif - -#ifndef __no_randomize_layout # define __no_randomize_layout -#endif - -#ifndef randomized_struct_fields_start # define randomized_struct_fields_start # define randomized_struct_fields_end #endif |