.. | .. |
---|
65 | 65 | |
---|
66 | 66 | if (act) { |
---|
67 | 67 | old_sigset_t mask; |
---|
68 | | - if (!access_ok(VERIFY_READ, act, sizeof(*act)) || |
---|
| 68 | + if (!access_ok(act, sizeof(*act)) || |
---|
69 | 69 | __get_user(new_ka.sa.sa_handler, &act->sa_handler) || |
---|
70 | 70 | __get_user(new_ka.sa.sa_flags, &act->sa_flags) || |
---|
71 | 71 | __get_user(mask, &act->sa_mask)) |
---|
.. | .. |
---|
77 | 77 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); |
---|
78 | 78 | |
---|
79 | 79 | if (!ret && oact) { |
---|
80 | | - if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) || |
---|
| 80 | + if (!access_ok(oact, sizeof(*oact)) || |
---|
81 | 81 | __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || |
---|
82 | 82 | __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || |
---|
83 | 83 | __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) |
---|
.. | .. |
---|
207 | 207 | sigset_t set; |
---|
208 | 208 | |
---|
209 | 209 | /* Verify that it's a good sigcontext before using it */ |
---|
210 | | - if (!access_ok(VERIFY_READ, sc, sizeof(*sc))) |
---|
| 210 | + if (!access_ok(sc, sizeof(*sc))) |
---|
211 | 211 | goto give_sigsegv; |
---|
212 | 212 | if (__get_user(set.sig[0], &sc->sc_mask)) |
---|
213 | 213 | goto give_sigsegv; |
---|
.. | .. |
---|
225 | 225 | return; |
---|
226 | 226 | |
---|
227 | 227 | give_sigsegv: |
---|
228 | | - force_sig(SIGSEGV, current); |
---|
| 228 | + force_sig(SIGSEGV); |
---|
229 | 229 | } |
---|
230 | 230 | |
---|
231 | 231 | asmlinkage void |
---|
.. | .. |
---|
235 | 235 | sigset_t set; |
---|
236 | 236 | |
---|
237 | 237 | /* Verify that it's a good ucontext_t before using it */ |
---|
238 | | - if (!access_ok(VERIFY_READ, &frame->uc, sizeof(frame->uc))) |
---|
| 238 | + if (!access_ok(&frame->uc, sizeof(frame->uc))) |
---|
239 | 239 | goto give_sigsegv; |
---|
240 | 240 | if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) |
---|
241 | 241 | goto give_sigsegv; |
---|
.. | .. |
---|
253 | 253 | return; |
---|
254 | 254 | |
---|
255 | 255 | give_sigsegv: |
---|
256 | | - force_sig(SIGSEGV, current); |
---|
| 256 | + force_sig(SIGSEGV); |
---|
257 | 257 | } |
---|
258 | 258 | |
---|
259 | 259 | |
---|
.. | .. |
---|
332 | 332 | |
---|
333 | 333 | oldsp = rdusp(); |
---|
334 | 334 | frame = get_sigframe(ksig, oldsp, sizeof(*frame)); |
---|
335 | | - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
---|
| 335 | + if (!access_ok(frame, sizeof(*frame))) |
---|
336 | 336 | return -EFAULT; |
---|
337 | 337 | |
---|
338 | 338 | err |= setup_sigcontext(&frame->sc, regs, set->sig[0], oldsp); |
---|
.. | .. |
---|
377 | 377 | |
---|
378 | 378 | oldsp = rdusp(); |
---|
379 | 379 | frame = get_sigframe(ksig, oldsp, sizeof(*frame)); |
---|
380 | | - if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) |
---|
| 380 | + if (!access_ok(frame, sizeof(*frame))) |
---|
381 | 381 | return -EFAULT; |
---|
382 | 382 | |
---|
383 | 383 | err |= copy_siginfo_to_user(&frame->info, &ksig->info); |
---|
.. | .. |
---|
453 | 453 | regs->r0 = EINTR; |
---|
454 | 454 | break; |
---|
455 | 455 | } |
---|
456 | | - /* fallthrough */ |
---|
| 456 | + fallthrough; |
---|
457 | 457 | case ERESTARTNOINTR: |
---|
458 | 458 | regs->r0 = r0; /* reset v0 and a3 and replay syscall */ |
---|
459 | 459 | regs->r19 = r19; |
---|
.. | .. |
---|
527 | 527 | schedule(); |
---|
528 | 528 | } else { |
---|
529 | 529 | local_irq_enable(); |
---|
530 | | - if (thread_flags & _TIF_SIGPENDING) { |
---|
| 530 | + if (thread_flags & (_TIF_SIGPENDING|_TIF_NOTIFY_SIGNAL)) { |
---|
531 | 531 | do_signal(regs, r0, r19); |
---|
532 | 532 | r0 = 0; |
---|
533 | 533 | } else { |
---|
534 | | - clear_thread_flag(TIF_NOTIFY_RESUME); |
---|
535 | 534 | tracehook_notify_resume(regs); |
---|
536 | 535 | } |
---|
537 | 536 | } |
---|