Re: x86/irq: Make run_on_irqstack_cond() typesafe

From: Sami Tolvanen
Date: Tue Sep 22 2020 - 14:45:34 EST


Hi Thomas,

On Tue, Sep 22, 2020 at 12:58 AM Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>
> Sami reported that run_on_irqstack_cond() requires the caller to cast
> functions to mismatching types, which trips indirect call Control-Flow
> Integrity (CFI) in Clang.
>
> Instead of disabling CFI on that function, provide proper helpers for
> the three call variants. The actual ASM code stays the same as that is
> out of reach.
>
> Reported-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx>
> Fixes: 931b94145981 ("x86/entry: Provide helpers for executing on the irqstack")
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

Thank you for the patch! I confirmed that this fixes the type mismatch
issue with CFI for me:

Tested-by: Sami Tolvanen <samitolvanen@xxxxxxxxxx>

Also, please note that this was first reported by Nathan in this GitHub issue:
https://github.com/ClangBuiltLinux/linux/issues/1052

Sami