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