diff options
Diffstat (limited to 'arch/x86/lib/usercopy_64.c')
| -rw-r--r-- | arch/x86/lib/usercopy_64.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c index e5b130bc2d0..05928aae911 100644 --- a/arch/x86/lib/usercopy_64.c +++ b/arch/x86/lib/usercopy_64.c @@ -18,6 +18,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size)  	might_fault();  	/* no memory constraint because it doesn't change any memory gcc knows  	   about */ +	stac();  	asm volatile(  		"	testq  %[size8],%[size8]\n"  		"	jz     4f\n" @@ -40,6 +41,7 @@ unsigned long __clear_user(void __user *addr, unsigned long size)  		: [size8] "=&c"(size), [dst] "=&D" (__d0)  		: [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),  		  [zero] "r" (0UL), [eight] "r" (8UL)); +	clac();  	return size;  }  EXPORT_SYMBOL(__clear_user); @@ -82,5 +84,6 @@ copy_user_handle_tail(char *to, char *from, unsigned len, unsigned zerorest)  	for (c = 0, zero_len = len; zerorest && zero_len; --zero_len)  		if (__put_user_nocheck(c, to++, sizeof(char)))  			break; +	clac();  	return len;  }  |