diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2016-08-21 22:13:39 -0400 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-09-13 17:50:13 -0400 | 
| commit | c2f18fa4cbb3ad92e033a24efa27583978ce9600 (patch) | |
| tree | 623b1209df74e6777cff21805d4ac71d18009e2c /arch/score/include | |
| parent | fd2d2b191fe75825c4c7a6f12f3fef35aaed7dd7 (diff) | |
| download | linux-c2f18fa4cbb3ad92e033a24efa27583978ce9600.tar.bz2 | |
score: fix __get_user/get_user
* should zero on any failure
* __get_user() should use __copy_from_user(), not copy_from_user()
Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/score/include')
| -rw-r--r-- | arch/score/include/asm/uaccess.h | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/arch/score/include/asm/uaccess.h b/arch/score/include/asm/uaccess.h index 20a3591225cc..c5d43111a5cc 100644 --- a/arch/score/include/asm/uaccess.h +++ b/arch/score/include/asm/uaccess.h @@ -163,7 +163,7 @@ do {									\  		__get_user_asm(val, "lw", ptr);				\  		 break;							\  	case 8: 							\ -		if ((copy_from_user((void *)&val, ptr, 8)) == 0)	\ +		if (__copy_from_user((void *)&val, ptr, 8) == 0)	\  			__gu_err = 0;					\  		else							\  			__gu_err = -EFAULT;				\ @@ -188,6 +188,8 @@ do {									\  									\  	if (likely(access_ok(VERIFY_READ, __gu_ptr, size)))		\  		__get_user_common((x), size, __gu_ptr);			\ +	else								\ +		(x) = 0;						\  									\  	__gu_err;							\  }) @@ -201,6 +203,7 @@ do {									\  		"2:\n"							\  		".section .fixup,\"ax\"\n"				\  		"3:li	%0, %4\n"					\ +		"li	%1, 0\n"					\  		"j	2b\n"						\  		".previous\n"						\  		".section __ex_table,\"a\"\n"				\ |