.. | .. |
---|
25 | 25 | #define KERNEL_DS ((mm_segment_t) { 0 }) |
---|
26 | 26 | #define USER_DS ((mm_segment_t) { -1 }) |
---|
27 | 27 | |
---|
28 | | -#define get_ds() (KERNEL_DS) |
---|
29 | 28 | #define get_fs() (current->thread.current_ds) |
---|
30 | 29 | #define set_fs(val) ((current->thread.current_ds) = (val)) |
---|
31 | 30 | |
---|
32 | | -#define segment_eq(a, b) ((a).seg == (b).seg) |
---|
| 31 | +#define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg) |
---|
33 | 32 | |
---|
34 | 33 | /* We have there a nice not-mapped page at PAGE_OFFSET - PAGE_SIZE, so that this test |
---|
35 | 34 | * can be fairly lightweight. |
---|
.. | .. |
---|
39 | 38 | #define __user_ok(addr, size) ({ (void)(size); (addr) < STACK_TOP; }) |
---|
40 | 39 | #define __kernel_ok (uaccess_kernel()) |
---|
41 | 40 | #define __access_ok(addr, size) (__user_ok((addr) & get_fs().seg, (size))) |
---|
42 | | -#define access_ok(type, addr, size) \ |
---|
43 | | - ({ (void)(type); __access_ok((unsigned long)(addr), size); }) |
---|
| 41 | +#define access_ok(addr, size) __access_ok((unsigned long)(addr), size) |
---|
44 | 42 | |
---|
45 | 43 | /* |
---|
46 | 44 | * The exception table consists of pairs of addresses: the first is the |
---|