diff options
Diffstat (limited to 'arch/x86/ia32/ia32entry.S')
| -rw-r--r-- | arch/x86/ia32/ia32entry.S | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 20e5f7ba0e6..9c289504e68 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S @@ -14,6 +14,7 @@  #include <asm/segment.h>  #include <asm/irqflags.h>  #include <asm/asm.h> +#include <asm/smap.h>  #include <linux/linkage.h>  #include <linux/err.h> @@ -146,8 +147,10 @@ ENTRY(ia32_sysenter_target)  	SAVE_ARGS 0,1,0   	/* no need to do an access_ok check here because rbp has been   	   32bit zero extended */  +	ASM_STAC  1:	movl	(%rbp),%ebp  	_ASM_EXTABLE(1b,ia32_badarg) +	ASM_CLAC  	orl     $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET)  	testl   $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)  	CFI_REMEMBER_STATE @@ -301,8 +304,10 @@ ENTRY(ia32_cstar_target)  	/* no need to do an access_ok check here because r8 has been  	   32bit zero extended */   	/* hardware stack frame is complete now */	 +	ASM_STAC  1:	movl	(%r8),%r9d  	_ASM_EXTABLE(1b,ia32_badarg) +	ASM_CLAC  	orl     $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET)  	testl   $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)  	CFI_REMEMBER_STATE @@ -365,6 +370,7 @@ cstar_tracesys:  END(ia32_cstar_target)  ia32_badarg: +	ASM_CLAC  	movq $-EFAULT,%rax  	jmp ia32_sysret  	CFI_ENDPROC  |