Skip to content

Commit

Permalink
MN10300: Proper use of macros get_user() in the case of incremented p…
Browse files Browse the repository at this point in the history
…ointers

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: Tkhai Kirill <tkhai@yandex.ru>
Signed-off-by: David Howells <dhowells@redhat.com>
  • Loading branch information
Tkhai Kirill authored and David Howells committed Mar 14, 2011
1 parent c44ed96 commit 6fc3443
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions arch/mn10300/include/asm/uaccess.h
Original file line number Diff line number Diff line change
Expand Up @@ -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; \
Expand Down

0 comments on commit 6fc3443

Please sign in to comment.