Messages in this thread |  | | Date | Fri, 27 Nov 2020 13:15:26 +0100 | From | Borislav Petkov <> | Subject | Re: [PATCH] x86/e820: fix the function type for e820__mapped_all |
| |
On Fri, Nov 13, 2020 at 10:26:54AM -0800, Sami Tolvanen wrote: > e820__mapped_all is passed as a callback to is_mmconf_reserved, which > expects a function of type: > > typedef bool (*check_reserved_t)(u64 start, u64 end, unsigned type); > > This trips indirect call checking with Clang's Control-Flow Integrity > (CFI). Change the last argument from enum e820_type to unsigned to fix > the type mismatch. > > Reported-by: Sedat Dilek <sedat.dilek@gmail.com> > Signed-off-by: Sami Tolvanen <samitolvanen@google.com> > --- > arch/x86/include/asm/e820/api.h | 2 +- > arch/x86/kernel/e820.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/include/asm/e820/api.h b/arch/x86/include/asm/e820/api.h > index e8f58ddd06d9..e872a796619d 100644 > --- a/arch/x86/include/asm/e820/api.h > +++ b/arch/x86/include/asm/e820/api.h > @@ -12,7 +12,7 @@ extern unsigned long pci_mem_start; > > extern bool e820__mapped_raw_any(u64 start, u64 end, enum e820_type type); > extern bool e820__mapped_any(u64 start, u64 end, enum e820_type type); > -extern bool e820__mapped_all(u64 start, u64 end, enum e820_type type); > +extern bool e820__mapped_all(u64 start, u64 end, unsigned type);
I think the proper fix is to fix the typedef to:
typedef bool (*check_reserved_t)(u64 start, u64 end, enum e820_type type);
because
* is_mmconf_reserved() is passing in E820_TYPE_RESERVED which is enum e820_type
* is_acpi_reserved() is the other check_reserved_t function ptr and the last arg type there is unused so it can just as well be enum e820_type.
Thx.
-- Regards/Gruss, Boris.
https://people.kernel.org/tglx/notes-about-netiquette
|  |