/linux-6.3-rc2/arch/x86/kernel/ |
A D | signal.c | 47 ksig->ka.sa.sa_flags & SA_IA32_ABI; in is_ia32_compat_frame() 58 ksig->ka.sa.sa_flags & SA_X32_ABI; in is_x32_frame() 77 struct k_sigaction *ka = &ksig->ka; in get_sigframe() 78 int ia32_frame = is_ia32_frame(ksig); in get_sigframe() 208 rseq_signal_deliver(ksig, regs); in setup_rt_frame() 211 if (is_ia32_frame(ksig)) { in setup_rt_frame() 215 return ia32_setup_frame(ksig, regs); in setup_rt_frame() 216 } else if (is_x32_frame(ksig)) { in setup_rt_frame() 304 struct ksignal ksig; in arch_do_signal_or_restart() local 306 if (get_signal(&ksig)) { in arch_do_signal_or_restart() [all …]
|
/linux-6.3-rc2/arch/um/kernel/ |
A D | signal.c | 49 static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 69 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 82 if ((ksig->ka.sa.sa_flags & SA_ONSTACK) && (sas_ss_flags(sp) == 0)) in handle_signal() 86 if (!(ksig->ka.sa.sa_flags & SA_SIGINFO)) in handle_signal() 87 err = setup_signal_stack_sc(sp, ksig, regs, oldset); in handle_signal() 90 err = setup_signal_stack_si(sp, ksig, regs, oldset); in handle_signal() 92 signal_setup_done(err, ksig, singlestep); in handle_signal() 97 struct ksignal ksig; in do_signal() local 100 while (get_signal(&ksig)) { in do_signal() 103 handle_signal(&ksig, regs); in do_signal()
|
/linux-6.3-rc2/arch/openrisc/kernel/ |
A D | signal.c | 129 static inline void __user *get_sigframe(struct ksignal *ksig, in get_sigframe() argument 136 sp = sigsp(sp, ksig); in get_sigframe() 156 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 162 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 163 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 204 handle_signal(struct ksignal *ksig, struct pt_regs *regs) in handle_signal() argument 208 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal() 227 struct ksignal ksig; in do_signal() local 262 if (get_signal(&ksig)) { in do_signal() 267 && !(ksig.ka.sa.sa_flags & SA_RESTART))) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/csky/kernel/ |
A D | signal.c | 128 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 142 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 146 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 168 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 170 regs->a0 = ksig->sig; /* a0: signal number */ in setup_rt_frame() 195 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 208 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 210 signal_setup_done(ret, ksig, 0); in handle_signal() 215 struct ksignal ksig; in do_signal() local 217 if (get_signal(&ksig)) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/riscv/kernel/ |
A D | signal.c | 171 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 185 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 230 current->comm, task_pid_nr(current), ksig->sig, in setup_rt_frame() 254 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 266 rseq_signal_deliver(ksig, regs); in handle_signal() 270 ret = compat_setup_rt_frame(ksig, oldset, regs); in handle_signal() 272 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 274 signal_setup_done(ret, ksig, 0); in handle_signal() 279 struct ksignal ksig; in do_signal() local 281 if (get_signal(&ksig)) { in do_signal() [all …]
|
A D | compat_signal.c | 176 static inline void __user *compat_get_sigframe(struct ksignal *ksig, in compat_get_sigframe() argument 191 sp = sigsp(sp, ksig) - framesize; in compat_get_sigframe() 199 int compat_setup_rt_frame(struct ksignal *ksig, sigset_t *set, in compat_setup_rt_frame() argument 205 frame = compat_get_sigframe(ksig, regs, sizeof(*frame)); in compat_setup_rt_frame() 209 err |= copy_siginfo_to_user32(&frame->info, &ksig->info); in compat_setup_rt_frame() 230 regs->epc = (unsigned long)ksig->ka.sa.sa_handler; in compat_setup_rt_frame() 232 regs->a0 = ksig->sig; /* a0: signal number */ in compat_setup_rt_frame() 238 current->comm, task_pid_nr(current), ksig->sig, in compat_setup_rt_frame()
|
/linux-6.3-rc2/arch/arm/kernel/ |
A D | signal.c | 344 if (ksig->ka.sa.sa_flags & SA_THIRTYTWO) in setup_return() 386 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 397 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_return() 434 regs->ARM_r0 = ksig->sig; in setup_return() 509 rseq_signal_deliver(ksig, regs); in handle_signal() 514 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 517 ret = setup_frame(ksig, oldset, regs); in handle_signal() 524 signal_setup_done(ret, ksig, 0); in handle_signal() 539 struct ksignal ksig; in do_signal() local 577 if (get_signal(&ksig)) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/sh/kernel/ |
A D | signal_32.c | 273 int err = 0, sig = ksig->sig; in setup_frame() 288 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_frame() 324 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_frame() 339 int err = 0, sig = ksig->sig; in setup_rt_frame() 358 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_rt_frame() 442 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 443 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 445 ret = setup_frame(ksig, oldset, regs); in handle_signal() 461 struct ksignal ksig; in do_signal() local 472 if (get_signal(&ksig)) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/sparc/kernel/ |
A D | signal_32.c | 212 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 292 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame() 301 if (ksig->ka.ka_restorer) in setup_frame() 391 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame() 398 if (ksig->ka.ka_restorer) in setup_rt_frame() 423 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 426 err = setup_frame(ksig, regs, oldset); in handle_signal() 427 signal_setup_done(err, ksig, 0); in handle_signal() 457 struct ksignal ksig; in do_signal() local 482 has_handler = get_signal(&ksig); in do_signal() [all …]
|
A D | signal32.c | 275 sp = sigsp(sp, ksig) - framesize; in get_sigframe() 380 force_sigsegv(ksig->sig); in setup_frame32() 456 regs->u_regs[UREG_I0] = ksig->sig; in setup_frame32() 469 if (ksig->ka.ka_restorer) { in setup_frame32() 514 force_sigsegv(ksig->sig); in setup_rt_frame32() 588 regs->u_regs[UREG_I0] = ksig->sig; in setup_rt_frame32() 601 if (ksig->ka.ka_restorer) in setup_rt_frame32() 632 signal_setup_done(err, ksig, 0); in handle_signal32() 662 struct ksignal ksig; in do_signal32() local 665 bool has_handler = get_signal(&ksig); in do_signal32() [all …]
|
/linux-6.3-rc2/arch/microblaze/kernel/ |
A D | signal.c | 149 unsigned long sp = sigsp(regs->r1, ksig); in get_sigframe() 158 int err = 0, sig = ksig->sig; in setup_rt_frame() 163 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 168 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 169 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 219 regs->pc = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 265 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 281 struct ksignal ksig; in do_signal() local 289 if (get_signal(&ksig)) { in do_signal() 292 handle_restart(regs, &ksig.ka, 1); in do_signal() [all …]
|
/linux-6.3-rc2/arch/hexagon/kernel/ |
A D | signal.c | 30 unsigned long sp = sigsp(regs->r29, ksig); in get_sigframe() 95 static int setup_rt_frame(struct ksignal *ksig, sigset_t *set, in setup_rt_frame() argument 102 frame = get_sigframe(ksig, regs, sizeof(struct rt_sigframe)); in setup_rt_frame() 107 if (copy_siginfo_to_user(&frame->info, &ksig->info)) in setup_rt_frame() 124 | (unsigned long long)ksig->sig; in setup_rt_frame() 128 pt_set_elr(regs, (unsigned long)ksig->ka.sa.sa_handler); in setup_rt_frame() 153 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 173 ret = setup_rt_frame(ksig, sigmask_to_save(), regs); in handle_signal() 183 struct ksignal ksig; in do_signal() local 188 if (get_signal(&ksig)) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/nios2/kernel/ |
A D | signal.c | 176 usp = sigsp(usp, ksig); in get_sigframe() 188 frame = get_sigframe(ksig, regs, sizeof(*frame)); in setup_rt_frame() 190 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in setup_rt_frame() 209 regs->r4 = (unsigned long) ksig->sig; in setup_rt_frame() 216 force_sigsegv(ksig->sig); in setup_rt_frame() 229 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 231 signal_setup_done(ret, ksig, 0); in handle_signal() 238 struct ksignal ksig; in do_signal() local 270 if (get_signal(&ksig)) { in do_signal() 276 && !(ksig.ka.sa.sa_flags & SA_RESTART))) { in do_signal() [all …]
|
/linux-6.3-rc2/arch/arc/kernel/ |
A D | signal.c | 251 unsigned long sp = sigsp(regs->sp, ksig); in get_sigframe() 294 if (unlikely(ksig->ka.sa.sa_flags & SA_SIGINFO)) { in setup_rt_frame() 295 err |= copy_siginfo_to_user(&sf->info, &ksig->info); in setup_rt_frame() 316 regs->r0 = ksig->sig; in setup_rt_frame() 319 regs->ret = (unsigned long)ksig->ka.sa.sa_handler; in setup_rt_frame() 325 if(!(ksig->ka.sa.sa_flags & SA_RESTORER)) in setup_rt_frame() 396 failed = setup_rt_frame(ksig, oldset, regs); in handle_signal() 398 signal_setup_done(failed, ksig, 0); in handle_signal() 403 struct ksignal ksig; in do_signal() local 410 arc_restart_syscall(&ksig.ka, regs); in do_signal() [all …]
|
/linux-6.3-rc2/arch/s390/kernel/ |
A D | signal.c | 394 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_rt_frame() 424 regs->gprs[2] = ksig->sig; in setup_rt_frame() 437 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 438 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 440 ret = setup_frame(ksig->sig, &ksig->ka, oldset, regs); in handle_signal() 457 struct ksignal ksig; in arch_do_signal_or_restart() local 468 if (get_signal(&ksig)) { in arch_do_signal_or_restart() 479 if (!(ksig.ka.sa.sa_flags & SA_RESTART)) { in arch_do_signal_or_restart() 495 rseq_signal_deliver(&ksig, regs); in arch_do_signal_or_restart() 497 handle_signal32(&ksig, oldset, regs); in arch_do_signal_or_restart() [all …]
|
A D | compat_signal.c | 257 int sig = ksig->sig; in setup_frame32() 271 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_frame32() 303 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_frame32() 305 ksig->ka.sa.sa_restorer | PSW32_ADDR_AMODE; in setup_frame32() 356 frame = get_sigframe(&ksig->ka, regs, frame_size); in setup_rt_frame32() 366 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_rt_frame32() 368 ksig->ka.sa.sa_restorer | PSW32_ADDR_AMODE; in setup_rt_frame32() 398 regs->gprs[2] = ksig->sig; in setup_rt_frame32() 415 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal32() 416 ret = setup_rt_frame32(ksig, oldset, regs); in handle_signal32() [all …]
|
/linux-6.3-rc2/arch/x86/include/asm/ |
A D | sighandling.h | 19 get_sigframe(struct ksignal *ksig, struct pt_regs *regs, size_t frame_size, 22 int ia32_setup_frame(struct ksignal *ksig, struct pt_regs *regs); 23 int ia32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs); 24 int x64_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs); 25 int x32_setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs);
|
/linux-6.3-rc2/arch/ia64/kernel/ |
A D | signal.c | 235 if (ksig->ka.sa.sa_flags & SA_ONSTACK) { in setup_frame() 259 force_sigsegv(ksig->sig); in setup_frame() 267 force_sigsegv(ksig->sig); in setup_frame() 271 err = __put_user(ksig->sig, &frame->arg0); in setup_frame() 284 force_sigsegv(ksig->sig); in setup_frame() 319 int ret = setup_frame(ksig, sigmask_to_save(), scr); in handle_signal() 336 struct ksignal ksig; in ia64_do_signal() local 343 if (!get_signal(&ksig)) in ia64_do_signal() 361 if (ksig.sig <= 0) in ia64_do_signal() 372 if ((ksig.ka.sa.sa_flags & SA_RESTART) == 0) { in ia64_do_signal() [all …]
|
/linux-6.3-rc2/arch/powerpc/kernel/ |
A D | signal.c | 175 oldsp = sigsp(oldsp, ksig); in get_sigframe() 249 struct ksignal ksig = { .sig = 0 }; in do_signal() local 254 get_signal(&ksig); in do_signal() 257 check_syscall_restart(tsk->thread.regs, &ksig.ka, ksig.sig > 0); in do_signal() 259 if (ksig.sig <= 0) { in do_signal() 283 rseq_signal_deliver(&ksig, tsk->thread.regs); in do_signal() 286 if (ksig.ka.sa.sa_flags & SA_SIGINFO) in do_signal() 287 ret = handle_rt_signal32(&ksig, oldset, tsk); in do_signal() 289 ret = handle_signal32(&ksig, oldset, tsk); in do_signal() 291 ret = handle_rt_signal64(&ksig, oldset, tsk); in do_signal() [all …]
|
/linux-6.3-rc2/arch/alpha/kernel/ |
A D | signal.c | 345 r26 = (unsigned long) ksig->ka.ka_restorer; in setup_frame() 361 regs->r16 = ksig->sig; /* a0: signal number */ in setup_frame() 399 r26 = (unsigned long) ksig->ka.ka_restorer; in setup_rt_frame() 438 if (ksig->ka.sa.sa_flags & SA_SIGINFO) in handle_signal() 439 ret = setup_rt_frame(ksig, oldset, regs); in handle_signal() 441 ret = setup_frame(ksig, oldset, regs); in handle_signal() 443 signal_setup_done(ret, ksig, 0); in handle_signal() 487 struct ksignal ksig; in do_signal() local 490 if (get_signal(&ksig)) { in do_signal() 495 syscall_restart(r0, r19, regs, &ksig.ka); in do_signal() [all …]
|
/linux-6.3-rc2/arch/parisc/kernel/ |
A D | signal.c | 234 frame = get_sigframe(&ksig->ka, usp, sigframe_size); in setup_rt_frame() 236 DBG(1, "%s: frame %p info %p\n", __func__, frame, &ksig->info); in setup_rt_frame() 261 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame() 284 haddr = A(ksig->ka.sa.sa_handler); in setup_rt_frame() 351 regs->gr[26] = ksig->sig; /* signal number */ in setup_rt_frame() 389 __func__, ksig->sig, &ksig->ka, &ksig->info, oldset, regs); in handle_signal() 392 ret = setup_rt_frame(ksig, oldset, regs, in_syscall); in handle_signal() 550 struct ksignal ksig; in do_signal() local 554 has_handler = get_signal(&ksig); in do_signal() 563 syscall_restart(regs, &ksig.ka); in do_signal() [all …]
|
/linux-6.3-rc2/arch/xtensa/kernel/ |
A D | signal.c | 340 static int setup_frame(struct ksignal *ksig, sigset_t *set, in setup_frame() argument 344 int err = 0, sig = ksig->sig; in setup_frame() 363 if (ksig->ka.sa.sa_flags & SA_SIGINFO) { in setup_frame() 364 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_frame() 375 if (ksig->ka.sa.sa_flags & SA_RESTORER) { in setup_frame() 376 ra = (unsigned long)ksig->ka.sa.sa_restorer; in setup_frame() 434 struct ksignal ksig; in do_signal() local 438 if (get_signal(&ksig)) { in do_signal() 454 if (!(ksig.ka.sa.sa_flags & SA_RESTART)) { in do_signal() 473 ret = setup_frame(&ksig, sigmask_to_save(), regs); in do_signal() [all …]
|
/linux-6.3-rc2/arch/x86/um/ |
A D | signal.c | 366 int err = 0, sig = ksig->sig; in setup_signal_stack_sc() 375 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_signal_stack_sc() 376 restorer = ksig->ka.sa.sa_restorer; in setup_signal_stack_sc() 412 int err = 0, sig = ksig->sig; in setup_signal_stack_si() 420 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_signal_stack_si() 421 restorer = ksig->ka.sa.sa_restorer; in setup_signal_stack_si() 427 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_signal_stack_si() 493 int err = 0, sig = ksig->sig; in setup_signal_stack_si() 504 if (ksig->ka.sa.sa_flags & SA_SIGINFO) { in setup_signal_stack_si() 533 if (ksig->ka.sa.sa_flags & SA_RESTORER) in setup_signal_stack_si() [all …]
|
/linux-6.3-rc2/arch/loongarch/kernel/ |
A D | signal.c | 402 sp = sigsp(sp, ksig); in get_sigframe() 457 frame = get_sigframe(ksig, regs, &extctx); in setup_rt_frame() 462 err |= copy_siginfo_to_user(&frame->rs_info, &ksig->info); in setup_rt_frame() 484 regs->regs[4] = ksig->sig; in setup_rt_frame() 489 regs->csr_era = (unsigned long) ksig->ka.sa.sa_handler; in setup_rt_frame() 512 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) { in handle_signal() 525 rseq_signal_deliver(ksig, regs); in handle_signal() 529 signal_setup_done(ret, ksig, 0); in handle_signal() 534 struct ksignal ksig; in arch_do_signal_or_restart() local 536 if (get_signal(&ksig)) { in arch_do_signal_or_restart() [all …]
|
/linux-6.3-rc2/arch/mips/kernel/ |
A D | signal.c | 578 sp = sigsp(sp, ksig); in get_sigframe() 738 regs->regs[ 4] = ksig->sig; in setup_frame() 787 regs->regs[ 4] = ksig->sig; in setup_rt_frame() 851 rseq_signal_deliver(ksig, regs); in handle_signal() 853 if (sig_uses_siginfo(&ksig->ka, abi)) in handle_signal() 855 ksig, regs, oldset); in handle_signal() 858 ksig, regs, oldset); in handle_signal() 860 signal_setup_done(ret, ksig, 0); in handle_signal() 865 struct ksignal ksig; in do_signal() local 867 if (get_signal(&ksig)) { in do_signal() [all …]
|