.. | .. |
---|
21 | 21 | "3:\n" \ |
---|
22 | 22 | ".section .fixup,\"ax\"\n" \ |
---|
23 | 23 | "4: %1 = #%5;\n" \ |
---|
24 | | - " jump 3b\n" \ |
---|
| 24 | + " jump ##3b\n" \ |
---|
25 | 25 | ".previous\n" \ |
---|
26 | 26 | ".section __ex_table,\"a\"\n" \ |
---|
27 | 27 | ".long 1b,4b,2b,4b\n" \ |
---|
.. | .. |
---|
36 | 36 | { |
---|
37 | 37 | int oldval = 0, ret; |
---|
38 | 38 | |
---|
39 | | - pagefault_disable(); |
---|
| 39 | + if (!access_ok(uaddr, sizeof(u32))) |
---|
| 40 | + return -EFAULT; |
---|
40 | 41 | |
---|
41 | 42 | switch (op) { |
---|
42 | 43 | case FUTEX_OP_SET: |
---|
.. | .. |
---|
62 | 63 | ret = -ENOSYS; |
---|
63 | 64 | } |
---|
64 | 65 | |
---|
65 | | - pagefault_enable(); |
---|
66 | | - |
---|
67 | 66 | if (!ret) |
---|
68 | 67 | *oval = oldval; |
---|
69 | 68 | |
---|
.. | .. |
---|
77 | 76 | int prev; |
---|
78 | 77 | int ret; |
---|
79 | 78 | |
---|
80 | | - if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32))) |
---|
| 79 | + if (!access_ok(uaddr, sizeof(u32))) |
---|
81 | 80 | return -EFAULT; |
---|
82 | 81 | |
---|
83 | 82 | __asm__ __volatile__ ( |
---|
.. | .. |
---|
91 | 90 | "3:\n" |
---|
92 | 91 | ".section .fixup,\"ax\"\n" |
---|
93 | 92 | "4: %0 = #%6\n" |
---|
94 | | - " jump 3b\n" |
---|
| 93 | + " jump ##3b\n" |
---|
95 | 94 | ".previous\n" |
---|
96 | 95 | ".section __ex_table,\"a\"\n" |
---|
97 | 96 | ".long 1b,4b,2b,4b\n" |
---|