Message ID | 20220513202159.1550547-15-samitolvanen@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KCFI support | expand |
On Fri, May 13, 2022 at 01:21:52PM -0700, Sami Tolvanen wrote: > CONFIG_CFI_CLANG doesn't use a jump table anymore and therefore, > won't change function references to point elsewhere. Remove the > __cficanonical attribute and all uses of it. > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > --- > include/linux/compiler_types.h | 4 ---- > include/linux/init.h | 4 ++-- > include/linux/pci.h | 4 ++-- > 3 files changed, 4 insertions(+), 8 deletions(-) I think this is missing removing it from include/linux/compiler-clang.h ? With that done (or explained why not): Reviewed-by: Kees Cook <keescook@chromium.org>
On Sat, May 14, 2022 at 2:56 PM Kees Cook <keescook@chromium.org> wrote: > > On Fri, May 13, 2022 at 01:21:52PM -0700, Sami Tolvanen wrote: > > CONFIG_CFI_CLANG doesn't use a jump table anymore and therefore, > > won't change function references to point elsewhere. Remove the > > __cficanonical attribute and all uses of it. > > > > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > > --- > > include/linux/compiler_types.h | 4 ---- > > include/linux/init.h | 4 ++-- > > include/linux/pci.h | 4 ++-- > > 3 files changed, 4 insertions(+), 8 deletions(-) > > I think this is missing removing it from include/linux/compiler-clang.h ? That was removed in the earlier patch that switched the CFI implementation. > With that done (or explained why not): I'll add a note about it to the commit message. Sami
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index 1c2c33ae1b37..bdd2526af46a 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -263,10 +263,6 @@ struct ftrace_likely_data { # define __nocfi #endif -#ifndef __cficanonical -# define __cficanonical -#endif - /* * Any place that could be marked with the "alloc_size" attribute is also * a place to be marked with the "malloc" attribute. Do this as part of the diff --git a/include/linux/init.h b/include/linux/init.h index baf0b29a7010..76058c9e0399 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -220,8 +220,8 @@ extern bool initcall_debug; __initcall_name(initstub, __iid, id) #define __define_initcall_stub(__stub, fn) \ - int __init __cficanonical __stub(void); \ - int __init __cficanonical __stub(void) \ + int __init __stub(void); \ + int __init __stub(void) \ { \ return fn(); \ } \ diff --git a/include/linux/pci.h b/include/linux/pci.h index 60adf42460ab..3cc50c4e3c64 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2021,8 +2021,8 @@ enum pci_fixup_pass { #ifdef CONFIG_LTO_CLANG #define __DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \ class_shift, hook, stub) \ - void __cficanonical stub(struct pci_dev *dev); \ - void __cficanonical stub(struct pci_dev *dev) \ + void stub(struct pci_dev *dev); \ + void stub(struct pci_dev *dev) \ { \ hook(dev); \ } \
CONFIG_CFI_CLANG doesn't use a jump table anymore and therefore, won't change function references to point elsewhere. Remove the __cficanonical attribute and all uses of it. Signed-off-by: Sami Tolvanen <samitolvanen@google.com> --- include/linux/compiler_types.h | 4 ---- include/linux/init.h | 4 ++-- include/linux/pci.h | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-)