| .. | .. |
|---|
| 47 | 47 | "3: lea 0(%2,%0,4),%0\n" \ |
|---|
| 48 | 48 | " jmp 2b\n" \ |
|---|
| 49 | 49 | ".previous\n" \ |
|---|
| 50 | | - _ASM_EXTABLE(0b,3b) \ |
|---|
| 51 | | - _ASM_EXTABLE(1b,2b) \ |
|---|
| 50 | + _ASM_EXTABLE_UA(0b, 3b) \ |
|---|
| 51 | + _ASM_EXTABLE_UA(1b, 2b) \ |
|---|
| 52 | 52 | : "=&c"(size), "=&D" (__d0) \ |
|---|
| 53 | 53 | : "r"(size & 3), "0"(size / 4), "1"(addr), "a"(0)); \ |
|---|
| 54 | 54 | } while (0) |
|---|
| 55 | 55 | |
|---|
| 56 | 56 | /** |
|---|
| 57 | | - * clear_user: - Zero a block of memory in user space. |
|---|
| 57 | + * clear_user - Zero a block of memory in user space. |
|---|
| 58 | 58 | * @to: Destination address, in user space. |
|---|
| 59 | 59 | * @n: Number of bytes to zero. |
|---|
| 60 | 60 | * |
|---|
| 61 | 61 | * Zero a block of memory in user space. |
|---|
| 62 | 62 | * |
|---|
| 63 | | - * Returns number of bytes that could not be cleared. |
|---|
| 63 | + * Return: number of bytes that could not be cleared. |
|---|
| 64 | 64 | * On success, this will be zero. |
|---|
| 65 | 65 | */ |
|---|
| 66 | 66 | unsigned long |
|---|
| 67 | 67 | clear_user(void __user *to, unsigned long n) |
|---|
| 68 | 68 | { |
|---|
| 69 | 69 | might_fault(); |
|---|
| 70 | | - if (access_ok(VERIFY_WRITE, to, n)) |
|---|
| 70 | + if (access_ok(to, n)) |
|---|
| 71 | 71 | __do_clear_user(to, n); |
|---|
| 72 | 72 | return n; |
|---|
| 73 | 73 | } |
|---|
| 74 | 74 | EXPORT_SYMBOL(clear_user); |
|---|
| 75 | 75 | |
|---|
| 76 | 76 | /** |
|---|
| 77 | | - * __clear_user: - Zero a block of memory in user space, with less checking. |
|---|
| 77 | + * __clear_user - Zero a block of memory in user space, with less checking. |
|---|
| 78 | 78 | * @to: Destination address, in user space. |
|---|
| 79 | 79 | * @n: Number of bytes to zero. |
|---|
| 80 | 80 | * |
|---|
| 81 | 81 | * Zero a block of memory in user space. Caller must check |
|---|
| 82 | 82 | * the specified block with access_ok() before calling this function. |
|---|
| 83 | 83 | * |
|---|
| 84 | | - * Returns number of bytes that could not be cleared. |
|---|
| 84 | + * Return: number of bytes that could not be cleared. |
|---|
| 85 | 85 | * On success, this will be zero. |
|---|
| 86 | 86 | */ |
|---|
| 87 | 87 | unsigned long |
|---|
| .. | .. |
|---|
| 153 | 153 | "101: lea 0(%%eax,%0,4),%0\n" |
|---|
| 154 | 154 | " jmp 100b\n" |
|---|
| 155 | 155 | ".previous\n" |
|---|
| 156 | | - _ASM_EXTABLE(1b,100b) |
|---|
| 157 | | - _ASM_EXTABLE(2b,100b) |
|---|
| 158 | | - _ASM_EXTABLE(3b,100b) |
|---|
| 159 | | - _ASM_EXTABLE(4b,100b) |
|---|
| 160 | | - _ASM_EXTABLE(5b,100b) |
|---|
| 161 | | - _ASM_EXTABLE(6b,100b) |
|---|
| 162 | | - _ASM_EXTABLE(7b,100b) |
|---|
| 163 | | - _ASM_EXTABLE(8b,100b) |
|---|
| 164 | | - _ASM_EXTABLE(9b,100b) |
|---|
| 165 | | - _ASM_EXTABLE(10b,100b) |
|---|
| 166 | | - _ASM_EXTABLE(11b,100b) |
|---|
| 167 | | - _ASM_EXTABLE(12b,100b) |
|---|
| 168 | | - _ASM_EXTABLE(13b,100b) |
|---|
| 169 | | - _ASM_EXTABLE(14b,100b) |
|---|
| 170 | | - _ASM_EXTABLE(15b,100b) |
|---|
| 171 | | - _ASM_EXTABLE(16b,100b) |
|---|
| 172 | | - _ASM_EXTABLE(17b,100b) |
|---|
| 173 | | - _ASM_EXTABLE(18b,100b) |
|---|
| 174 | | - _ASM_EXTABLE(19b,100b) |
|---|
| 175 | | - _ASM_EXTABLE(20b,100b) |
|---|
| 176 | | - _ASM_EXTABLE(21b,100b) |
|---|
| 177 | | - _ASM_EXTABLE(22b,100b) |
|---|
| 178 | | - _ASM_EXTABLE(23b,100b) |
|---|
| 179 | | - _ASM_EXTABLE(24b,100b) |
|---|
| 180 | | - _ASM_EXTABLE(25b,100b) |
|---|
| 181 | | - _ASM_EXTABLE(26b,100b) |
|---|
| 182 | | - _ASM_EXTABLE(27b,100b) |
|---|
| 183 | | - _ASM_EXTABLE(28b,100b) |
|---|
| 184 | | - _ASM_EXTABLE(29b,100b) |
|---|
| 185 | | - _ASM_EXTABLE(30b,100b) |
|---|
| 186 | | - _ASM_EXTABLE(31b,100b) |
|---|
| 187 | | - _ASM_EXTABLE(32b,100b) |
|---|
| 188 | | - _ASM_EXTABLE(33b,100b) |
|---|
| 189 | | - _ASM_EXTABLE(34b,100b) |
|---|
| 190 | | - _ASM_EXTABLE(35b,100b) |
|---|
| 191 | | - _ASM_EXTABLE(36b,100b) |
|---|
| 192 | | - _ASM_EXTABLE(37b,100b) |
|---|
| 193 | | - _ASM_EXTABLE(99b,101b) |
|---|
| 156 | + _ASM_EXTABLE_UA(1b, 100b) |
|---|
| 157 | + _ASM_EXTABLE_UA(2b, 100b) |
|---|
| 158 | + _ASM_EXTABLE_UA(3b, 100b) |
|---|
| 159 | + _ASM_EXTABLE_UA(4b, 100b) |
|---|
| 160 | + _ASM_EXTABLE_UA(5b, 100b) |
|---|
| 161 | + _ASM_EXTABLE_UA(6b, 100b) |
|---|
| 162 | + _ASM_EXTABLE_UA(7b, 100b) |
|---|
| 163 | + _ASM_EXTABLE_UA(8b, 100b) |
|---|
| 164 | + _ASM_EXTABLE_UA(9b, 100b) |
|---|
| 165 | + _ASM_EXTABLE_UA(10b, 100b) |
|---|
| 166 | + _ASM_EXTABLE_UA(11b, 100b) |
|---|
| 167 | + _ASM_EXTABLE_UA(12b, 100b) |
|---|
| 168 | + _ASM_EXTABLE_UA(13b, 100b) |
|---|
| 169 | + _ASM_EXTABLE_UA(14b, 100b) |
|---|
| 170 | + _ASM_EXTABLE_UA(15b, 100b) |
|---|
| 171 | + _ASM_EXTABLE_UA(16b, 100b) |
|---|
| 172 | + _ASM_EXTABLE_UA(17b, 100b) |
|---|
| 173 | + _ASM_EXTABLE_UA(18b, 100b) |
|---|
| 174 | + _ASM_EXTABLE_UA(19b, 100b) |
|---|
| 175 | + _ASM_EXTABLE_UA(20b, 100b) |
|---|
| 176 | + _ASM_EXTABLE_UA(21b, 100b) |
|---|
| 177 | + _ASM_EXTABLE_UA(22b, 100b) |
|---|
| 178 | + _ASM_EXTABLE_UA(23b, 100b) |
|---|
| 179 | + _ASM_EXTABLE_UA(24b, 100b) |
|---|
| 180 | + _ASM_EXTABLE_UA(25b, 100b) |
|---|
| 181 | + _ASM_EXTABLE_UA(26b, 100b) |
|---|
| 182 | + _ASM_EXTABLE_UA(27b, 100b) |
|---|
| 183 | + _ASM_EXTABLE_UA(28b, 100b) |
|---|
| 184 | + _ASM_EXTABLE_UA(29b, 100b) |
|---|
| 185 | + _ASM_EXTABLE_UA(30b, 100b) |
|---|
| 186 | + _ASM_EXTABLE_UA(31b, 100b) |
|---|
| 187 | + _ASM_EXTABLE_UA(32b, 100b) |
|---|
| 188 | + _ASM_EXTABLE_UA(33b, 100b) |
|---|
| 189 | + _ASM_EXTABLE_UA(34b, 100b) |
|---|
| 190 | + _ASM_EXTABLE_UA(35b, 100b) |
|---|
| 191 | + _ASM_EXTABLE_UA(36b, 100b) |
|---|
| 192 | + _ASM_EXTABLE_UA(37b, 100b) |
|---|
| 193 | + _ASM_EXTABLE_UA(99b, 101b) |
|---|
| 194 | 194 | : "=&c"(size), "=&D" (d0), "=&S" (d1) |
|---|
| 195 | 195 | : "1"(to), "2"(from), "0"(size) |
|---|
| 196 | 196 | : "eax", "edx", "memory"); |
|---|
| .. | .. |
|---|
| 259 | 259 | "9: lea 0(%%eax,%0,4),%0\n" |
|---|
| 260 | 260 | "16: jmp 8b\n" |
|---|
| 261 | 261 | ".previous\n" |
|---|
| 262 | | - _ASM_EXTABLE(0b,16b) |
|---|
| 263 | | - _ASM_EXTABLE(1b,16b) |
|---|
| 264 | | - _ASM_EXTABLE(2b,16b) |
|---|
| 265 | | - _ASM_EXTABLE(21b,16b) |
|---|
| 266 | | - _ASM_EXTABLE(3b,16b) |
|---|
| 267 | | - _ASM_EXTABLE(31b,16b) |
|---|
| 268 | | - _ASM_EXTABLE(4b,16b) |
|---|
| 269 | | - _ASM_EXTABLE(41b,16b) |
|---|
| 270 | | - _ASM_EXTABLE(10b,16b) |
|---|
| 271 | | - _ASM_EXTABLE(51b,16b) |
|---|
| 272 | | - _ASM_EXTABLE(11b,16b) |
|---|
| 273 | | - _ASM_EXTABLE(61b,16b) |
|---|
| 274 | | - _ASM_EXTABLE(12b,16b) |
|---|
| 275 | | - _ASM_EXTABLE(71b,16b) |
|---|
| 276 | | - _ASM_EXTABLE(13b,16b) |
|---|
| 277 | | - _ASM_EXTABLE(81b,16b) |
|---|
| 278 | | - _ASM_EXTABLE(14b,16b) |
|---|
| 279 | | - _ASM_EXTABLE(91b,16b) |
|---|
| 280 | | - _ASM_EXTABLE(6b,9b) |
|---|
| 281 | | - _ASM_EXTABLE(7b,16b) |
|---|
| 262 | + _ASM_EXTABLE_UA(0b, 16b) |
|---|
| 263 | + _ASM_EXTABLE_UA(1b, 16b) |
|---|
| 264 | + _ASM_EXTABLE_UA(2b, 16b) |
|---|
| 265 | + _ASM_EXTABLE_UA(21b, 16b) |
|---|
| 266 | + _ASM_EXTABLE_UA(3b, 16b) |
|---|
| 267 | + _ASM_EXTABLE_UA(31b, 16b) |
|---|
| 268 | + _ASM_EXTABLE_UA(4b, 16b) |
|---|
| 269 | + _ASM_EXTABLE_UA(41b, 16b) |
|---|
| 270 | + _ASM_EXTABLE_UA(10b, 16b) |
|---|
| 271 | + _ASM_EXTABLE_UA(51b, 16b) |
|---|
| 272 | + _ASM_EXTABLE_UA(11b, 16b) |
|---|
| 273 | + _ASM_EXTABLE_UA(61b, 16b) |
|---|
| 274 | + _ASM_EXTABLE_UA(12b, 16b) |
|---|
| 275 | + _ASM_EXTABLE_UA(71b, 16b) |
|---|
| 276 | + _ASM_EXTABLE_UA(13b, 16b) |
|---|
| 277 | + _ASM_EXTABLE_UA(81b, 16b) |
|---|
| 278 | + _ASM_EXTABLE_UA(14b, 16b) |
|---|
| 279 | + _ASM_EXTABLE_UA(91b, 16b) |
|---|
| 280 | + _ASM_EXTABLE_UA(6b, 9b) |
|---|
| 281 | + _ASM_EXTABLE_UA(7b, 16b) |
|---|
| 282 | 282 | : "=&c"(size), "=&D" (d0), "=&S" (d1) |
|---|
| 283 | 283 | : "1"(to), "2"(from), "0"(size) |
|---|
| 284 | 284 | : "eax", "edx", "memory"); |
|---|
| .. | .. |
|---|
| 321 | 321 | "3: lea 0(%3,%0,4),%0\n" \ |
|---|
| 322 | 322 | " jmp 2b\n" \ |
|---|
| 323 | 323 | ".previous\n" \ |
|---|
| 324 | | - _ASM_EXTABLE(4b,5b) \ |
|---|
| 325 | | - _ASM_EXTABLE(0b,3b) \ |
|---|
| 326 | | - _ASM_EXTABLE(1b,2b) \ |
|---|
| 324 | + _ASM_EXTABLE_UA(4b, 5b) \ |
|---|
| 325 | + _ASM_EXTABLE_UA(0b, 3b) \ |
|---|
| 326 | + _ASM_EXTABLE_UA(1b, 2b) \ |
|---|
| 327 | 327 | : "=&c"(size), "=&D" (__d0), "=&S" (__d1), "=r"(__d2) \ |
|---|
| 328 | 328 | : "3"(size), "0"(size), "1"(to), "2"(from) \ |
|---|
| 329 | 329 | : "memory"); \ |
|---|