diff options
author | Dimitri John Ledkov <dimitri.ledkov@canonical.com> | 2022-07-11 17:11:30 +0100 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2022-07-31 01:13:17 +0200 |
commit | 152c9d8005771fac48fb02a948015b8ca370c668 (patch) | |
tree | 765952ec794eeb540cdc073c83e55b1a5198a7ab | |
parent | 20e1d7002d785b35ae80cc8ac7bb19f00451ba15 (diff) | |
download | backports-152c9d8005771fac48fb02a948015b8ca370c668.tar.gz |
headers: backport IBT / CFI support
Kernels that support IBT on x86 require module_init/exit() functions
to have cfi protection included. Backport __CFI_ADDRESSABLE changes
from upstream linux/module.h into backports version of module.h
header.
This results in backported modules correctly pick up CFI protection
only when building against IBT enabled kernels.
Signed-off-by: Dimitri John Ledkov <dimitri.ledkov@canonical.com>
-rw-r--r-- | backport/backport-include/linux/module.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/backport/backport-include/linux/module.h b/backport/backport-include/linux/module.h index cd342e0d..efe970f1 100644 --- a/backport/backport-include/linux/module.h +++ b/backport/backport-include/linux/module.h @@ -3,6 +3,10 @@ #include_next <linux/module.h> #include <linux/rcupdate.h> +#ifndef __CFI_ADDRESSABLE +#define __CFI_ADDRESSABLE(fn, __attr) +#endif + /* * The define overwriting module_init is based on the original module_init * which looks like this: @@ -34,6 +38,7 @@ extern void backport_dependency_symbol(void); return initfn(); \ } \ int init_module(void) __attribute__((cold,alias("__init_backport")));\ + __CFI_ADDRESSABLE(init_module, __initdata); \ BACKPORT_MOD_VERSIONS /* @@ -58,7 +63,8 @@ extern void backport_dependency_symbol(void); exitfn(); \ rcu_barrier(); \ } \ - void cleanup_module(void) __attribute__((cold,alias("__exit_compat"))); + void cleanup_module(void) __attribute__((cold,alias("__exit_compat"))); \ + __CFI_ADDRESSABLE(cleanup_module, __exitdata); #endif #endif /* __BACKPORT_LINUX_MODULE_H */ |