Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6fc34436 authored by Tkhai Kirill's avatar Tkhai Kirill Committed by David Howells
Browse files

MN10300: Proper use of macros get_user() in the case of incremented pointers



Using __get_user_check(x, ptr++, size) leads to double increment of pointer.
This macro uses the macro get_user directly, which itself is used in this way
(get_user(x, ptr++)) in some functions of the kernel. The patch fixes the
error.

Reported-by: default avatarTkhai Kirill <tkhai@yandex.ru>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent c44ed965
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -160,9 +160,10 @@ struct __large_struct { unsigned long buf[100]; };

#define __get_user_check(x, ptr, size)					\
({									\
	const __typeof__(ptr) __guc_ptr = (ptr);			\
	int _e;								\
	if (likely(__access_ok((unsigned long) (ptr), (size))))		\
		_e = __get_user_nocheck((x), (ptr), (size));		\
	if (likely(__access_ok((unsigned long) __guc_ptr, (size))))	\
		_e = __get_user_nocheck((x), __guc_ptr, (size));	\
	else {								\
		_e = -EFAULT;						\
		(x) = (__typeof__(x))0;					\