]> git.baikalelectronics.ru Git - kernel.git/commit
x86/irq: Make run_on_irqstack_cond() typesafe
authorThomas Gleixner <tglx@linutronix.de>
Tue, 22 Sep 2020 07:58:52 +0000 (09:58 +0200)
committerBorislav Petkov <bp@suse.de>
Tue, 22 Sep 2020 20:13:34 +0000 (22:13 +0200)
commit2d28fbae1728e75f17f631e9ff7692e898184bf8
tree51faaf4fae8f85c76632c12da92b4fe247c457f7
parentcc0755c3f45b8ece91169df2768d4cdcfdab3669
x86/irq: Make run_on_irqstack_cond() typesafe

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.

 [ bp: Fix __run_on_irqstack() prototype to match. ]

Fixes: 4af50b831307 ("x86/entry: Provide helpers for executing on the irqstack")
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Reported-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Sami Tolvanen <samitolvanen@google.com>
Cc: <stable@vger.kernel.org>
Link: https://github.com/ClangBuiltLinux/linux/issues/1052
Link: https://lkml.kernel.org/r/87pn6eb5tv.fsf@nanos.tec.linutronix.de
arch/x86/entry/common.c
arch/x86/entry/entry_64.S
arch/x86/include/asm/idtentry.h
arch/x86/include/asm/irq_stack.h
arch/x86/kernel/irq.c
arch/x86/kernel/irq_64.c