| .. | .. |
|---|
| 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 | }) |
|---|