OSDN Git Service

x86: uaccess: fix compilation error on CONFIG_M386
authorHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Thu, 29 Jan 2009 19:49:18 +0000 (11:49 -0800)
committerIngo Molnar <mingo@elte.hu>
Thu, 29 Jan 2009 20:29:02 +0000 (21:29 +0100)
In case of !CONFIG_X86_WP_WORKS_OK, __put_user_size_ex() is not defined.
Add macros for !CONFIG_X86_WP_WORKS_OK case.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/uaccess.h

index 0ec6de4..b9a2415 100644 (file)
@@ -525,8 +525,6 @@ struct __large_struct { unsigned long buf[100]; };
  */
 #define get_user_try           uaccess_try
 #define get_user_catch(err)    uaccess_catch(err)
-#define put_user_try           uaccess_try
-#define put_user_catch(err)    uaccess_catch(err)
 
 #define get_user_ex(x, ptr)    do {                                    \
        unsigned long __gue_val;                                        \
@@ -534,9 +532,29 @@ struct __large_struct { unsigned long buf[100]; };
        (x) = (__force __typeof__(*(ptr)))__gue_val;                    \
 } while (0)
 
+#ifdef CONFIG_X86_WP_WORKS_OK
+
+#define put_user_try           uaccess_try
+#define put_user_catch(err)    uaccess_catch(err)
+
 #define put_user_ex(x, ptr)                                            \
        __put_user_size_ex((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
 
+#else /* !CONFIG_X86_WP_WORKS_OK */
+
+#define put_user_try           do {            \
+       int __uaccess_err = 0;
+
+#define put_user_catch(err)                    \
+       (err) |= __uaccess_err;                 \
+} while (0)
+
+#define put_user_ex(x, ptr)    do {            \
+       __uaccess_err |= __put_user(x, ptr);    \
+} while (0)
+
+#endif /* CONFIG_X86_WP_WORKS_OK */
+
 /*
  * movsl can be slow when source and dest are not both 8-byte aligned
  */