Message ID | 20210427204720.25007-9-yu-cheng.yu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Control-flow Enforcement: Indirect Branch Tracking | expand |
On Tue, Apr 27, 2021 at 01:47:19PM -0700, Yu-cheng Yu wrote: > From: "H.J. Lu" <hjl.tools@gmail.com> > > ENDBR is a special new instruction for the Indirect Branch Tracking (IBT) > component of CET. IBT prevents attacks by ensuring that (most) indirect > branches and function calls may only land at ENDBR instructions. Branches > that don't follow the rules will result in control flow (#CF) exceptions. > > ENDBR is a noop when IBT is unsupported or disabled. Most ENDBR > instructions are inserted automatically by the compiler, but branch > targets written in assembly must have ENDBR added manually. > > Add that to __kernel_vsyscall entry point. > > Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Kees Cook <keescook@chromium.org>
diff --git a/arch/x86/entry/vdso/vdso32/system_call.S b/arch/x86/entry/vdso/vdso32/system_call.S index de1fff7188aa..7793dc221726 100644 --- a/arch/x86/entry/vdso/vdso32/system_call.S +++ b/arch/x86/entry/vdso/vdso32/system_call.S @@ -7,6 +7,7 @@ #include <asm/dwarf2.h> #include <asm/cpufeatures.h> #include <asm/alternative-asm.h> +#include <asm/vdso.h> .text .globl __kernel_vsyscall @@ -14,6 +15,7 @@ ALIGN __kernel_vsyscall: CFI_STARTPROC + ENDBR32 /* * Reshuffle regs so that all of any of the entry instructions * will preserve enough state.