hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/alpha/kernel/signal.c
....@@ -65,7 +65,7 @@
6565
6666 if (act) {
6767 old_sigset_t mask;
68
- if (!access_ok(VERIFY_READ, act, sizeof(*act)) ||
68
+ if (!access_ok(act, sizeof(*act)) ||
6969 __get_user(new_ka.sa.sa_handler, &act->sa_handler) ||
7070 __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
7171 __get_user(mask, &act->sa_mask))
....@@ -77,7 +77,7 @@
7777 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
7878
7979 if (!ret && oact) {
80
- if (!access_ok(VERIFY_WRITE, oact, sizeof(*oact)) ||
80
+ if (!access_ok(oact, sizeof(*oact)) ||
8181 __put_user(old_ka.sa.sa_handler, &oact->sa_handler) ||
8282 __put_user(old_ka.sa.sa_flags, &oact->sa_flags) ||
8383 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask))
....@@ -207,7 +207,7 @@
207207 sigset_t set;
208208
209209 /* 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)))
211211 goto give_sigsegv;
212212 if (__get_user(set.sig[0], &sc->sc_mask))
213213 goto give_sigsegv;
....@@ -225,7 +225,7 @@
225225 return;
226226
227227 give_sigsegv:
228
- force_sig(SIGSEGV, current);
228
+ force_sig(SIGSEGV);
229229 }
230230
231231 asmlinkage void
....@@ -235,7 +235,7 @@
235235 sigset_t set;
236236
237237 /* 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)))
239239 goto give_sigsegv;
240240 if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
241241 goto give_sigsegv;
....@@ -253,7 +253,7 @@
253253 return;
254254
255255 give_sigsegv:
256
- force_sig(SIGSEGV, current);
256
+ force_sig(SIGSEGV);
257257 }
258258
259259
....@@ -332,7 +332,7 @@
332332
333333 oldsp = rdusp();
334334 frame = get_sigframe(ksig, oldsp, sizeof(*frame));
335
- if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
335
+ if (!access_ok(frame, sizeof(*frame)))
336336 return -EFAULT;
337337
338338 err |= setup_sigcontext(&frame->sc, regs, set->sig[0], oldsp);
....@@ -377,7 +377,7 @@
377377
378378 oldsp = rdusp();
379379 frame = get_sigframe(ksig, oldsp, sizeof(*frame));
380
- if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
380
+ if (!access_ok(frame, sizeof(*frame)))
381381 return -EFAULT;
382382
383383 err |= copy_siginfo_to_user(&frame->info, &ksig->info);
....@@ -453,7 +453,7 @@
453453 regs->r0 = EINTR;
454454 break;
455455 }
456
- /* fallthrough */
456
+ fallthrough;
457457 case ERESTARTNOINTR:
458458 regs->r0 = r0; /* reset v0 and a3 and replay syscall */
459459 regs->r19 = r19;
....@@ -527,11 +527,10 @@
527527 schedule();
528528 } else {
529529 local_irq_enable();
530
- if (thread_flags & _TIF_SIGPENDING) {
530
+ if (thread_flags & (_TIF_SIGPENDING|_TIF_NOTIFY_SIGNAL)) {
531531 do_signal(regs, r0, r19);
532532 r0 = 0;
533533 } else {
534
- clear_thread_flag(TIF_NOTIFY_RESUME);
535534 tracehook_notify_resume(regs);
536535 }
537536 }