enable kexec
[linux-2.6.git] / include / asm-i386 / uaccess.h
index 9e31639..47351a3 100644 (file)
@@ -9,7 +9,6 @@
 #include <linux/thread_info.h>
 #include <linux/prefetch.h>
 #include <linux/string.h>
-#include <linux/compiler.h>
 #include <asm/page.h>
 
 #define VERIFY_READ 0
 
 #define segment_eq(a,b)        ((a).seg == (b).seg)
 
-extern long not_a_user_address;
-#define check_user_ptr(x) \
-       (void) ({ void __user * __userptr = (__typeof__(*(x)) *)&not_a_user_address; __userptr; })
-
 /*
  * movsl can be slow when source and dest are not both 8-byte aligned
  */
@@ -61,7 +56,7 @@ extern struct movsl_mask {
  */
 #define __range_ok(addr,size) ({ \
        unsigned long flag,sum; \
-       check_user_ptr(addr); \
+       __chk_user_ptr(addr); \
        asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0" \
                :"=&r" (flag), "=r" (sum) \
                :"1" (addr),"g" ((int)(size)),"g" (current_thread_info()->addr_limit.seg)); \
@@ -215,7 +210,7 @@ extern int zero_user_size(unsigned int size, void *ptr);
  */
 #define direct_get_user(x,ptr)                                         \
 ({     int __ret_gu,__val_gu;                                          \
-       check_user_ptr(ptr);                                            \
+       __chk_user_ptr(ptr);                                            \
        switch(sizeof (*(ptr))) {                                       \
        case 1:  __get_user_x(1,__ret_gu,__val_gu,ptr); break;          \
        case 2:  __get_user_x(2,__ret_gu,__val_gu,ptr); break;          \
@@ -305,7 +300,7 @@ extern void __put_user_bad(void);
 #define __put_user_check(x,ptr,size)                                   \
 ({                                                                     \
        long __pu_err = -EFAULT;                                        \
-       __typeof__(*(ptr)) *__pu_addr = (ptr);                          \
+       __typeof__(*(ptr)) __user *__pu_addr = (ptr);                   \
        might_sleep();                                          \
        if (access_ok(VERIFY_WRITE,__pu_addr,size))                     \
                __put_user_size((x),__pu_addr,(size),__pu_err,-EFAULT); \
@@ -334,7 +329,7 @@ extern void __put_user_bad(void);
 #define __put_user_size(x,ptr,size,retval,errret)                      \
 do {                                                                   \
        retval = 0;                                                     \
-       check_user_ptr(ptr);                                            \
+       __chk_user_ptr(ptr);                                            \
        switch (size) {                                                 \
        case 1: __put_user_asm(x,ptr,retval,"b","b","iq",errret);break; \
        case 2: __put_user_asm(x,ptr,retval,"w","w","ir",errret);break; \
@@ -393,7 +388,7 @@ extern long __get_user_bad(void);
 #define __get_user_size(x,ptr,size,retval,errret)                      \
 do {                                                                   \
        retval = 0;                                                     \
-       check_user_ptr(ptr);                                            \
+       __chk_user_ptr(ptr);                                            \
        switch (size) {                                                 \
        case 1: __get_user_asm(x,ptr,retval,"b","b","=q",errret);break; \
        case 2: __get_user_asm(x,ptr,retval,"w","w","=r",errret);break; \
@@ -419,8 +414,8 @@ do {                                                                        \
                : "m"(__m(addr)), "i"(errret), "0"(err))
 
 
-unsigned long __must_check __copy_to_user_ll(void __user *to, const void *from, unsigned long n);
-unsigned long __must_check __copy_from_user_ll(void *to, const void __user *from, unsigned long n);
+unsigned long __copy_to_user_ll(void __user *to, const void *from, unsigned long n);
+unsigned long __copy_from_user_ll(void *to, const void __user *from, unsigned long n);
 
 /*
  * Here we special-case 1, 2 and 4-byte copy_*_user invocations.  On a fault
@@ -443,7 +438,7 @@ unsigned long __must_check __copy_from_user_ll(void *to, const void __user *from
  * Returns number of bytes that could not be copied.
  * On success, this will be zero.
  */
-static inline unsigned long __must_check
+static inline unsigned long
 __direct_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
        if (__builtin_constant_p(n)) {
@@ -481,7 +476,7 @@ __direct_copy_to_user(void __user *to, const void *from, unsigned long n)
  * If some data could not be copied, this function will pad the copied
  * data to the requested size using zero bytes.
  */
-static inline unsigned long __must_check
+static inline unsigned long
 __direct_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
        if (__builtin_constant_p(n)) {
@@ -515,7 +510,7 @@ __direct_copy_from_user(void *to, const void __user *from, unsigned long n)
  * Returns number of bytes that could not be copied.
  * On success, this will be zero.
  */
-static inline unsigned long __must_check
+static inline unsigned long
 direct_copy_to_user(void __user *to, const void *from, unsigned long n)
 {
        might_sleep();
@@ -540,7 +535,7 @@ direct_copy_to_user(void __user *to, const void *from, unsigned long n)
  * If some data could not be copied, this function will pad the copied
  * data to the requested size using zero bytes.
  */
-static inline unsigned long __must_check
+static inline unsigned long
 direct_copy_from_user(void *to, const void __user *from, unsigned long n)
 {
        might_sleep();
@@ -631,5 +626,8 @@ extern int indirect_uaccess;
 #define strncpy_from_user direct_strncpy_from_user
 
 #endif /* CONFIG_X86_UACCESS_INDIRECT */
+#define __copy_to_user_inatomic __copy_to_user
+#define __copy_from_user_inatomic __copy_from_user
+
 
 #endif /* __i386_UACCESS_H */