git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
include
/
asm-arm
/
uaccess.h
diff --git
a/include/asm-arm/uaccess.h
b/include/asm-arm/uaccess.h
index
51bc2a9
..
064f0f5
100644
(file)
--- a/
include/asm-arm/uaccess.h
+++ b/
include/asm-arm/uaccess.h
@@
-77,11
+77,6
@@
static inline void set_fs (mm_segment_t fs)
#define access_ok(type,addr,size) (__range_ok(addr,size) == 0)
#define access_ok(type,addr,size) (__range_ok(addr,size) == 0)
-static inline int verify_area(int type, const void __user *addr, unsigned long size)
-{
- return access_ok(type, addr, size) ? 0 : -EFAULT;
-}
-
/*
* Single-value transfer routines. They automatically use the right
* size if we just have the right pointer type. Note that the functions
/*
* Single-value transfer routines. They automatically use the right
* size if we just have the right pointer type. Note that the functions
@@
-105,38
+100,34
@@
static inline int verify_area(int type, const void __user *addr, unsigned long s
extern int __get_user_1(void *);
extern int __get_user_2(void *);
extern int __get_user_4(void *);
extern int __get_user_1(void *);
extern int __get_user_2(void *);
extern int __get_user_4(void *);
-extern int __get_user_8(void *);
extern int __get_user_bad(void);
extern int __get_user_bad(void);
-#define __get_user_x(__r
1
,__p,__e,__s,__i...) \
+#define __get_user_x(__r
2
,__p,__e,__s,__i...) \
__asm__ __volatile__ ( \
__asm__ __volatile__ ( \
- __asmeq("%0", "r0") __asmeq("%1", "r
1
") \
+ __asmeq("%0", "r0") __asmeq("%1", "r
2
") \
"bl __get_user_" #__s \
"bl __get_user_" #__s \
- : "=&r" (__e), "=r" (__r
1
) \
+ : "=&r" (__e), "=r" (__r
2
) \
: "0" (__p) \
: __i, "cc")
#define get_user(x,p) \
({ \
const register typeof(*(p)) __user *__p asm("r0") = (p);\
: "0" (__p) \
: __i, "cc")
#define get_user(x,p) \
({ \
const register typeof(*(p)) __user *__p asm("r0") = (p);\
- register
typeof(*(p)) __r1 asm("r1
"); \
+ register
unsigned int __r2 asm("r2
"); \
register int __e asm("r0"); \
switch (sizeof(*(__p))) { \
case 1: \
register int __e asm("r0"); \
switch (sizeof(*(__p))) { \
case 1: \
- __get_user_x(__r
1
, __p, __e, 1, "lr"); \
+ __get_user_x(__r
2
, __p, __e, 1, "lr"); \
break; \
case 2: \
break; \
case 2: \
- __get_user_x(__r
1, __p, __e, 2, "r2
", "lr"); \
+ __get_user_x(__r
2, __p, __e, 2, "r3
", "lr"); \
break; \
case 4: \
break; \
case 4: \
- __get_user_x(__r
1
, __p, __e, 4, "lr"); \
+ __get_user_x(__r
2
, __p, __e, 4, "lr"); \
break; \
break; \
- case 8: \
- __get_user_x(__r1, __p, __e, 8, "lr"); \
- break; \
default: __e = __get_user_bad(); break; \
} \
default: __e = __get_user_bad(); break; \
} \
- x =
__r1;
\
+ x =
(typeof(*(p))) __r2;
\
__e; \
})
__e; \
})
@@
-227,31
+218,31
@@
extern int __put_user_4(void *, unsigned int);
extern int __put_user_8(void *, unsigned long long);
extern int __put_user_bad(void);
extern int __put_user_8(void *, unsigned long long);
extern int __put_user_bad(void);
-#define __put_user_x(__r
1
,__p,__e,__s) \
+#define __put_user_x(__r
2
,__p,__e,__s) \
__asm__ __volatile__ ( \
__asm__ __volatile__ ( \
- __asmeq("%0", "r0") __asmeq("%2", "r
1
") \
+ __asmeq("%0", "r0") __asmeq("%2", "r
2
") \
"bl __put_user_" #__s \
: "=&r" (__e) \
"bl __put_user_" #__s \
: "=&r" (__e) \
- : "0" (__p), "r" (__r
1
) \
+ : "0" (__p), "r" (__r
2
) \
: "ip", "lr", "cc")
#define put_user(x,p) \
({ \
: "ip", "lr", "cc")
#define put_user(x,p) \
({ \
- const register typeof(*(p)) __r
1 asm("r1
") = (x); \
+ const register typeof(*(p)) __r
2 asm("r2
") = (x); \
const register typeof(*(p)) __user *__p asm("r0") = (p);\
register int __e asm("r0"); \
switch (sizeof(*(__p))) { \
case 1: \
const register typeof(*(p)) __user *__p asm("r0") = (p);\
register int __e asm("r0"); \
switch (sizeof(*(__p))) { \
case 1: \
- __put_user_x(__r
1
, __p, __e, 1); \
+ __put_user_x(__r
2
, __p, __e, 1); \
break; \
case 2: \
break; \
case 2: \
- __put_user_x(__r
1
, __p, __e, 2); \
+ __put_user_x(__r
2
, __p, __e, 2); \
break; \
case 4: \
break; \
case 4: \
- __put_user_x(__r
1
, __p, __e, 4); \
+ __put_user_x(__r
2
, __p, __e, 4); \
break; \
case 8: \
break; \
case 8: \
- __put_user_x(__r
1
, __p, __e, 8); \
+ __put_user_x(__r
2
, __p, __e, 8); \
break; \
default: __e = __put_user_bad(); break; \
} \
break; \
default: __e = __put_user_bad(); break; \
} \
@@
-394,6
+385,9
@@
static inline unsigned long __copy_to_user(void __user *to, const void *from, un
return __arch_copy_to_user(to, from, n);
}
return __arch_copy_to_user(to, from, n);
}
+#define __copy_to_user_inatomic __copy_to_user
+#define __copy_from_user_inatomic __copy_from_user
+
static inline unsigned long clear_user (void __user *to, unsigned long n)
{
if (access_ok(VERIFY_WRITE, to, n))
static inline unsigned long clear_user (void __user *to, unsigned long n)
{
if (access_ok(VERIFY_WRITE, to, n))