diff options
Diffstat (limited to 'arch/x86/lib/putuser.S')
| -rw-r--r-- | arch/x86/lib/putuser.S | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/x86/lib/putuser.S b/arch/x86/lib/putuser.S index 36b0d15ae6e..fc6ba17a7ee 100644 --- a/arch/x86/lib/putuser.S +++ b/arch/x86/lib/putuser.S @@ -15,6 +15,7 @@  #include <asm/thread_info.h>  #include <asm/errno.h>  #include <asm/asm.h> +#include <asm/smap.h>  /* @@ -31,7 +32,8 @@  #define ENTER	CFI_STARTPROC ; \  		GET_THREAD_INFO(%_ASM_BX) -#define EXIT	ret ; \ +#define EXIT	ASM_CLAC ;	\ +		ret ;		\  		CFI_ENDPROC  .text @@ -39,6 +41,7 @@ ENTRY(__put_user_1)  	ENTER  	cmp TI_addr_limit(%_ASM_BX),%_ASM_CX  	jae bad_put_user +	ASM_STAC  1:	movb %al,(%_ASM_CX)  	xor %eax,%eax  	EXIT @@ -50,6 +53,7 @@ ENTRY(__put_user_2)  	sub $1,%_ASM_BX  	cmp %_ASM_BX,%_ASM_CX  	jae bad_put_user +	ASM_STAC  2:	movw %ax,(%_ASM_CX)  	xor %eax,%eax  	EXIT @@ -61,6 +65,7 @@ ENTRY(__put_user_4)  	sub $3,%_ASM_BX  	cmp %_ASM_BX,%_ASM_CX  	jae bad_put_user +	ASM_STAC  3:	movl %eax,(%_ASM_CX)  	xor %eax,%eax  	EXIT @@ -72,6 +77,7 @@ ENTRY(__put_user_8)  	sub $7,%_ASM_BX  	cmp %_ASM_BX,%_ASM_CX  	jae bad_put_user +	ASM_STAC  4:	mov %_ASM_AX,(%_ASM_CX)  #ifdef CONFIG_X86_32  5:	movl %edx,4(%_ASM_CX) @@ -86,12 +92,10 @@ bad_put_user:  	EXIT  END(bad_put_user) -.section __ex_table,"a" -	_ASM_PTR 1b,bad_put_user -	_ASM_PTR 2b,bad_put_user -	_ASM_PTR 3b,bad_put_user -	_ASM_PTR 4b,bad_put_user +	_ASM_EXTABLE(1b,bad_put_user) +	_ASM_EXTABLE(2b,bad_put_user) +	_ASM_EXTABLE(3b,bad_put_user) +	_ASM_EXTABLE(4b,bad_put_user)  #ifdef CONFIG_X86_32 -	_ASM_PTR 5b,bad_put_user +	_ASM_EXTABLE(5b,bad_put_user)  #endif -.previous  | 
