x86: turn __put_user_check directly into put_user.
authorGlauber Costa <gcosta@redhat.com>
Wed, 25 Jun 2008 16:00:48 +0000 (13:00 -0300)
committerIngo Molnar <mingo@elte.hu>
Wed, 9 Jul 2008 07:14:26 +0000 (09:14 +0200)
We also check user pointer in x86_64 put_user, the way i386 does.

In a separate patch for bisecting purposes.

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/asm-x86/uaccess_64.h

index 42a9769687e9e7a2f99ac62cc3575a8bfbc7b6c9..9139854d37b095d364e49b2b6ffd3f99ea6922c0 100644 (file)
@@ -23,9 +23,6 @@ extern void __put_user_bad(void);
                     :"c" (ptr),"a" (x)                                 \
                     :"ebx")
 
-#define put_user(x, ptr)                                               \
-       __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
-
 #define __get_user(x, ptr)                                             \
        __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
 #define __put_user(x, ptr)                                             \
@@ -34,11 +31,12 @@ extern void __put_user_bad(void);
 #define __get_user_unaligned __get_user
 #define __put_user_unaligned __put_user
 
-#define __put_user_check(x, ptr, size)                         \
+#define put_user(x, ptr)                                       \
 ({                                                             \
        int __pu_err;                                           \
        typeof(*(ptr)) __user *__pu_addr = (ptr);               \
-       switch (size) {                                         \
+       __chk_user_ptr(ptr);                                    \
+       switch (sizeof(*(ptr))) {                               \
        case 1:                                                 \
                __put_user_x(1, __pu_err, x, __pu_addr);        \
                break;                                          \