Re: [PATCH v3] x86/pci: fix the function type for check_reserved_t

From: Kees Cook
Date: Wed Dec 02 2020 - 14:40:46 EST


On Mon, Nov 30, 2020 at 11:39:00AM -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);
>
> However, e820__mapped_all accepts enum e820_type as the last
> argument and this type mismatch trips indirect call checking with
> Clang's Control-Flow Integrity (CFI).
>
> As is_mmconf_reserved only passes enum e820_type values for the
> type argument, change the typedef and the unused type argument in
> is_acpi_reserved to enum e820_type to fix the type mismatch.
>
> Reported-by: Sedat Dilek <sedat.dilek@xxxxxxxxx>
> Suggested-by: Borislav Petkov <bp@xxxxxxxxx>
> Signed-off-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx>

Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>

--
Kees Cook