diff options
Diffstat (limited to 'arch/x86/lib/getuser.S')
| -rw-r--r-- | arch/x86/lib/getuser.S | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S index b33b1fb1e6d..156b9c80467 100644 --- a/arch/x86/lib/getuser.S +++ b/arch/x86/lib/getuser.S @@ -33,6 +33,7 @@  #include <asm/asm-offsets.h>  #include <asm/thread_info.h>  #include <asm/asm.h> +#include <asm/smap.h>  	.text  ENTRY(__get_user_1) @@ -40,8 +41,10 @@ ENTRY(__get_user_1)  	GET_THREAD_INFO(%_ASM_DX)  	cmp TI_addr_limit(%_ASM_DX),%_ASM_AX  	jae bad_get_user +	ASM_STAC  1:	movzb (%_ASM_AX),%edx  	xor %eax,%eax +	ASM_CLAC  	ret  	CFI_ENDPROC  ENDPROC(__get_user_1) @@ -53,8 +56,10 @@ ENTRY(__get_user_2)  	GET_THREAD_INFO(%_ASM_DX)  	cmp TI_addr_limit(%_ASM_DX),%_ASM_AX  	jae bad_get_user +	ASM_STAC  2:	movzwl -1(%_ASM_AX),%edx  	xor %eax,%eax +	ASM_CLAC  	ret  	CFI_ENDPROC  ENDPROC(__get_user_2) @@ -66,8 +71,10 @@ ENTRY(__get_user_4)  	GET_THREAD_INFO(%_ASM_DX)  	cmp TI_addr_limit(%_ASM_DX),%_ASM_AX  	jae bad_get_user +	ASM_STAC  3:	mov -3(%_ASM_AX),%edx  	xor %eax,%eax +	ASM_CLAC  	ret  	CFI_ENDPROC  ENDPROC(__get_user_4) @@ -80,8 +87,10 @@ ENTRY(__get_user_8)  	GET_THREAD_INFO(%_ASM_DX)  	cmp TI_addr_limit(%_ASM_DX),%_ASM_AX  	jae	bad_get_user +	ASM_STAC  4:	movq -7(%_ASM_AX),%_ASM_DX  	xor %eax,%eax +	ASM_CLAC  	ret  	CFI_ENDPROC  ENDPROC(__get_user_8) @@ -91,6 +100,7 @@ bad_get_user:  	CFI_STARTPROC  	xor %edx,%edx  	mov $(-EFAULT),%_ASM_AX +	ASM_CLAC  	ret  	CFI_ENDPROC  END(bad_get_user)  |