summaryrefslogtreecommitdiff
path: root/arch/x86/include/asm/ibt.h
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2022-03-08 16:30:38 +0100
committerPeter Zijlstra <peterz@infradead.org>2022-03-15 10:32:40 +0100
commitfe379fa4d199abc52d5b4a256e52cf94eff685cf (patch)
tree4466b0d16bc23c3b36f574ef17113bb3cbcfd497 /arch/x86/include/asm/ibt.h
parent99c95c5d4f1027130d555fdb27b576520894827d (diff)
x86/ibt: Disable IBT around firmware
Assume firmware isn't IBT clean and disable it across calls. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Link: https://lore.kernel.org/r/20220308154318.759989383@infradead.org
Diffstat (limited to 'arch/x86/include/asm/ibt.h')
-rw-r--r--arch/x86/include/asm/ibt.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/include/asm/ibt.h b/arch/x86/include/asm/ibt.h
index fcaf6a41d373..52fb05d66489 100644
--- a/arch/x86/include/asm/ibt.h
+++ b/arch/x86/include/asm/ibt.h
@@ -52,6 +52,9 @@ static inline bool is_endbr(u32 val)
return val == gen_endbr();
}
+extern __noendbr u64 ibt_save(void);
+extern __noendbr void ibt_restore(u64 save);
+
#else /* __ASSEMBLY__ */
#ifdef CONFIG_X86_64
@@ -74,6 +77,9 @@ static inline bool is_endbr(u32 val)
static inline bool is_endbr(u32 val) { return false; }
+static inline u64 ibt_save(void) { return 0; }
+static inline void ibt_restore(u64 save) { }
+
#else /* __ASSEMBLY__ */
#define ENDBR