]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-i386/uaccess.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6-omap-h63xx.git] / include / asm-i386 / uaccess.h
index 3f1337c342087561483c5d604396a227ce4664ce..371457b1ceb6de2b47e8fcf7d125f8e57488cfb5 100644 (file)
@@ -197,13 +197,15 @@ extern void __put_user_8(void);
 
 #define put_user(x,ptr)                                                \
 ({     int __ret_pu;                                           \
+       __typeof__(*(ptr)) __pu_val;                            \
        __chk_user_ptr(ptr);                                    \
+       __pu_val = x;                                           \
        switch(sizeof(*(ptr))) {                                \
-       case 1: __put_user_1(x, ptr); break;                    \
-       case 2: __put_user_2(x, ptr); break;                    \
-       case 4: __put_user_4(x, ptr); break;                    \
-       case 8: __put_user_8(x, ptr); break;                    \
-       default:__put_user_X(x, ptr); break;                    \
+       case 1: __put_user_1(__pu_val, ptr); break;             \
+       case 2: __put_user_2(__pu_val, ptr); break;             \
+       case 4: __put_user_4(__pu_val, ptr); break;             \
+       case 8: __put_user_8(__pu_val, ptr); break;             \
+       default:__put_user_X(__pu_val, ptr); break;             \
        }                                                       \
        __ret_pu;                                               \
 })