--- v28
+++ v22
@@ -1,38 +1,29 @@
From: "H.J. Lu" <hjl.tools@gmail.com>
-Update ARCH_X86_CET_STATUS and ARCH_X86_CET_DISABLE for Indirect Branch
-Tracking.
+Add ENDBR32 to __kernel_vsyscall entry point.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com>
+Acked-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
---
- arch/x86/kernel/cet_prctl.c | 5 +++++
- 1 file changed, 5 insertions(+)
+ arch/x86/entry/vdso/vdso32/system_call.S | 3 +++
+ 1 file changed, 3 insertions(+)
-diff --git a/arch/x86/kernel/cet_prctl.c b/arch/x86/kernel/cet_prctl.c
-index b426d200e070..bd3c80d402e7 100644
---- a/arch/x86/kernel/cet_prctl.c
-+++ b/arch/x86/kernel/cet_prctl.c
-@@ -22,6 +22,9 @@ static int cet_copy_status_to_user(struct thread_shstk *shstk, u64 __user *ubuf)
- buf[2] = shstk->size;
- }
-
-+ if (shstk->ibt)
-+ buf[0] |= GNU_PROPERTY_X86_FEATURE_1_IBT;
-+
- return copy_to_user(ubuf, buf, sizeof(buf));
- }
-
-@@ -46,6 +49,8 @@ int prctl_cet(int option, u64 arg2)
- return -EINVAL;
- if (arg2 & GNU_PROPERTY_X86_FEATURE_1_SHSTK)
- shstk_disable();
-+ if (arg2 & GNU_PROPERTY_X86_FEATURE_1_IBT)
-+ ibt_disable();
- return 0;
-
- case ARCH_X86_CET_LOCK:
+diff --git a/arch/x86/entry/vdso/vdso32/system_call.S b/arch/x86/entry/vdso/vdso32/system_call.S
+index de1fff7188aa..f19eaec3de3b 100644
+--- a/arch/x86/entry/vdso/vdso32/system_call.S
++++ b/arch/x86/entry/vdso/vdso32/system_call.S
+@@ -14,6 +14,9 @@
+ ALIGN
+ __kernel_vsyscall:
+ CFI_STARTPROC
++#ifdef CONFIG_X86_CET
++ endbr32
++#endif
+ /*
+ * Reshuffle regs so that all of any of the entry instructions
+ * will preserve enough state.
--
2.21.0