.. | .. |
---|
69 | 69 | #define USER_DS ((mm_segment_t) { __UA_LIMIT }) |
---|
70 | 70 | #endif |
---|
71 | 71 | |
---|
72 | | -#define get_ds() (KERNEL_DS) |
---|
73 | 72 | #define get_fs() (current_thread_info()->addr_limit) |
---|
74 | 73 | #define set_fs(x) (current_thread_info()->addr_limit = (x)) |
---|
75 | 74 | |
---|
76 | | -#define segment_eq(a, b) ((a).seg == (b).seg) |
---|
| 75 | +#define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg) |
---|
77 | 76 | |
---|
78 | 77 | /* |
---|
79 | 78 | * eva_kernel_access() - determine whether kernel memory access on an EVA system |
---|
.. | .. |
---|
109 | 108 | |
---|
110 | 109 | /* |
---|
111 | 110 | * access_ok: - Checks if a user space pointer is valid |
---|
112 | | - * @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that |
---|
113 | | - * %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe |
---|
114 | | - * to write to a block, it is always safe to read from it. |
---|
115 | 111 | * @addr: User space pointer to start of block to check |
---|
116 | 112 | * @size: Size of block to check |
---|
117 | 113 | * |
---|
.. | .. |
---|
134 | 130 | return (get_fs().seg & (addr | (addr + size) | __ua_size(size))) == 0; |
---|
135 | 131 | } |
---|
136 | 132 | |
---|
137 | | -#define access_ok(type, addr, size) \ |
---|
| 133 | +#define access_ok(addr, size) \ |
---|
138 | 134 | likely(__access_ok((addr), (size))) |
---|
139 | 135 | |
---|
140 | 136 | /* |
---|
.. | .. |
---|
304 | 300 | const __typeof__(*(ptr)) __user * __gu_ptr = (ptr); \ |
---|
305 | 301 | \ |
---|
306 | 302 | might_fault(); \ |
---|
307 | | - if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) { \ |
---|
| 303 | + if (likely(access_ok( __gu_ptr, size))) { \ |
---|
308 | 304 | if (eva_kernel_access()) \ |
---|
309 | 305 | __get_kernel_common((x), size, __gu_ptr); \ |
---|
310 | 306 | else \ |
---|
.. | .. |
---|
446 | 442 | int __pu_err = -EFAULT; \ |
---|
447 | 443 | \ |
---|
448 | 444 | might_fault(); \ |
---|
449 | | - if (likely(access_ok(VERIFY_WRITE, __pu_addr, size))) { \ |
---|
| 445 | + if (likely(access_ok( __pu_addr, size))) { \ |
---|
450 | 446 | if (eva_kernel_access()) \ |
---|
451 | 447 | __put_kernel_common(__pu_addr, size); \ |
---|
452 | 448 | else \ |
---|
.. | .. |
---|
691 | 687 | ({ \ |
---|
692 | 688 | void __user * __cl_addr = (addr); \ |
---|
693 | 689 | unsigned long __cl_size = (n); \ |
---|
694 | | - if (__cl_size && access_ok(VERIFY_WRITE, \ |
---|
695 | | - __cl_addr, __cl_size)) \ |
---|
| 690 | + if (__cl_size && access_ok(__cl_addr, __cl_size)) \ |
---|
696 | 691 | __cl_size = __clear_user(__cl_addr, __cl_size); \ |
---|
697 | 692 | __cl_size; \ |
---|
698 | 693 | }) |
---|