x86/ibt: Suppress spurious ENDBR
authorPeter Zijlstra <peterz@infradead.org>
Wed, 2 Aug 2023 10:55:46 +0000 (12:55 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 12 Sep 2023 15:50:53 +0000 (17:50 +0200)
commit25e73b7e3f72a25aa30cbb2eecb49036e0acf066
treeec51d86d83644e810a6ea761725bd6c344654dca
parent5290e88ba2c742ca77c5f5b690e5af549cfd8591
x86/ibt: Suppress spurious ENDBR

It was reported that under certain circumstances GCC emits ENDBR
instructions for _THIS_IP_ usage. Specifically, when it appears at the
start of a basic block -- but not elsewhere.

Since _THIS_IP_ is never used for control flow, these ENDBR
instructions are completely superfluous. Override the _THIS_IP_
definition for x86_64 to avoid this.

Less ENDBR instructions is better.

Fixes: 156ff4a544ae ("x86/ibt: Base IBT bits")
Reported-by: David Kaplan <David.Kaplan@amd.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230802110323.016197440@infradead.org
arch/x86/include/asm/linkage.h
include/linux/instruction_pointer.h