Commit ed01b3d2 authored by Ralf Baechle's avatar Ralf Baechle

MIPS: Make uaccess.h slightly more sparse friendly.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent d0aab922
...@@ -104,17 +104,17 @@ ...@@ -104,17 +104,17 @@
#define __access_mask get_fs().seg #define __access_mask get_fs().seg
#define __access_ok(addr, size, mask) \ #define __access_ok(addr, size, mask) \
({ \ ({ \
const volatile void __user *__up = addr; \ unsigned long __addr = (unsigned long) (addr); \
unsigned long __addr = (unsigned long) __up; \ unsigned long __size = size; \
unsigned long __size = size; \ unsigned long __mask = mask; \
unsigned long __mask = mask; \ unsigned long __ok; \
unsigned long __ok; \ \
\ __chk_user_ptr(addr); \
__ok = (signed long)(__mask & (__addr | (__addr + __size) | \ __ok = (signed long)(__mask & (__addr | (__addr + __size) | \
__ua_size(__size))); \ __ua_size(__size))); \
__ok == 0; \ __ok == 0; \
}) })
#define access_ok(type, addr, size) \ #define access_ok(type, addr, size) \
...@@ -235,6 +235,7 @@ do { \ ...@@ -235,6 +235,7 @@ do { \
({ \ ({ \
int __gu_err; \ int __gu_err; \
\ \
__chk_user_ptr(ptr); \
__get_user_common((x), size, ptr); \ __get_user_common((x), size, ptr); \
__gu_err; \ __gu_err; \
}) })
...@@ -315,6 +316,7 @@ do { \ ...@@ -315,6 +316,7 @@ do { \
__typeof__(*(ptr)) __pu_val; \ __typeof__(*(ptr)) __pu_val; \
int __pu_err = 0; \ int __pu_err = 0; \
\ \
__chk_user_ptr(ptr); \
__pu_val = (x); \ __pu_val = (x); \
switch (size) { \ switch (size) { \
case 1: __put_user_asm("sb", ptr); break; \ case 1: __put_user_asm("sb", ptr); break; \
...@@ -882,7 +884,20 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n); ...@@ -882,7 +884,20 @@ extern size_t __copy_user_inatomic(void *__to, const void *__from, size_t __n);
__cu_len; \ __cu_len; \
}) })
#define __copy_in_user(to, from, n) __copy_from_user(to, from, n) #define __copy_in_user(to, from, n) \
({ \
void __user *__cu_to; \
const void __user *__cu_from; \
long __cu_len; \
\
might_sleep(); \
__cu_to = (to); \
__cu_from = (from); \
__cu_len = (n); \
__cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \
__cu_len); \
__cu_len; \
})
#define copy_in_user(to, from, n) \ #define copy_in_user(to, from, n) \
({ \ ({ \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment