371,9 → 371,20 |
: "m"(__m(addr)), "i"(errret), "0"(err)) |
|
|
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); |
static inline unsigned long __copy_to_user_ll(void __user *to, const void *from, unsigned long n) { |
|
memcpy(to,from,n); |
return 0; |
|
} |
|
static inline unsigned long __copy_from_user_ll(void *to, const void __user *from, unsigned long n) { |
|
memcpy(to,from,n); |
return 0; |
|
} |
|
/* |
* Here we special-case 1, 2 and 4-byte copy_*_user invocations. On a fault |
* we return the initial request size (1, 2 or 4), as copy_*_user should do. |
398,22 → 409,10 |
static inline unsigned long |
__copy_to_user(void __user *to, const void *from, unsigned long n) |
{ |
if (__builtin_constant_p(n)) { |
unsigned long ret; |
|
switch (n) { |
case 1: |
__put_user_size(*(u8 *)from, (u8 *)to, 1, ret, 1); |
return ret; |
case 2: |
__put_user_size(*(u16 *)from, (u16 *)to, 2, ret, 2); |
return ret; |
case 4: |
__put_user_size(*(u32 *)from, (u32 *)to, 4, ret, 4); |
return ret; |
} |
} |
return __copy_to_user_ll(to, from, n); |
memcpy(to,from,n); |
return 0; |
|
} |
|
/** |