#define segment_eq(a,b) ((a).ar4 == (b).ar4)
-#define __access_ok(addr,size) (1)
-
-#define access_ok(type,addr,size) __access_ok(addr,size)
-
-extern inline int verify_area(int type, const void __user *addr,
- unsigned long size)
+static inline int __access_ok(const void __user *addr, unsigned long size)
{
- return access_ok(type, addr, size) ? 0 : -EFAULT;
+ return 1;
}
+#define access_ok(type,addr,size) __access_ok(addr,size)
/*
* The exception table consists of pairs of addresses: the first is the
})
#endif
-#ifndef __CHECKER__
#define __put_user(x, ptr) \
({ \
__typeof__(*(ptr)) __x = (x); \
int __pu_err; \
+ __chk_user_ptr(ptr); \
switch (sizeof (*(ptr))) { \
case 1: \
case 2: \
__put_user_asm(__x, ptr, __pu_err); \
break; \
default: \
- __pu_err = __put_user_bad(); \
+ __put_user_bad(); \
break; \
} \
__pu_err; \
})
-#else
-#define __put_user(x, ptr) \
-({ \
- void __user *p; \
- p = (ptr); \
- 0; \
-})
-#endif
#define put_user(x, ptr) \
({ \
})
-extern int __put_user_bad(void);
+extern int __put_user_bad(void) __attribute__((noreturn));
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
#define __get_user_asm(x, ptr, err) \
})
#endif
-#ifndef __CHECKER__
#define __get_user(x, ptr) \
({ \
- __typeof__(*(ptr)) __x; \
int __gu_err; \
+ __chk_user_ptr(ptr); \
switch (sizeof(*(ptr))) { \
- case 1: \
- case 2: \
- case 4: \
- case 8: \
+ case 1: { \
+ unsigned char __x; \
__get_user_asm(__x, ptr, __gu_err); \
+ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
break; \
+ }; \
+ case 2: { \
+ unsigned short __x; \
+ __get_user_asm(__x, ptr, __gu_err); \
+ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
+ break; \
+ }; \
+ case 4: { \
+ unsigned int __x; \
+ __get_user_asm(__x, ptr, __gu_err); \
+ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
+ break; \
+ }; \
+ case 8: { \
+ unsigned long long __x; \
+ __get_user_asm(__x, ptr, __gu_err); \
+ (x) = *(__force __typeof__(*(ptr)) *) &__x; \
+ break; \
+ }; \
default: \
- __x = 0; \
- __gu_err = __get_user_bad(); \
+ __get_user_bad(); \
break; \
} \
- (x) = __x; \
__gu_err; \
})
-#else
-#define __get_user(x, ptr) \
-({ \
- void __user *p; \
- p = (ptr); \
- 0; \
-})
-#endif
-
#define get_user(x, ptr) \
({ \
__get_user(x, ptr); \
})
-extern int __get_user_bad(void);
+extern int __get_user_bad(void) __attribute__((noreturn));
#define __put_user_unaligned __put_user
#define __get_user_unaligned __get_user