Lines Matching refs:ksig
321 __setup_frame(int sig, struct ksignal *ksig, sigset_t *set,
328 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
341 if (ksig->ka.sa.sa_flags & SA_RESTORER)
342 restorer = ksig->ka.sa.sa_restorer;
359 regs->ip = (unsigned long)ksig->ka.sa.sa_handler;
376 static int __setup_rt_frame(int sig, struct ksignal *ksig,
383 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
403 if (ksig->ka.sa.sa_flags & SA_RESTORER)
404 restorer = ksig->ka.sa.sa_restorer;
419 if (copy_siginfo_to_user(&frame->info, &ksig->info))
424 regs->ip = (unsigned long)ksig->ka.sa.sa_handler;
455 static int __setup_rt_frame(int sig, struct ksignal *ksig,
463 if (!(ksig->ka.sa.sa_flags & SA_RESTORER))
466 frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp);
479 unsafe_put_user(ksig->ka.sa.sa_restorer, &frame->pretcode, Efault);
484 if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
485 if (copy_siginfo_to_user(&frame->info, &ksig->info))
498 regs->ip = (unsigned long) ksig->ka.sa.sa_handler;
557 static int x32_setup_rt_frame(struct ksignal *ksig,
567 if (!(ksig->ka.sa.sa_flags & SA_RESTORER))
570 frame = get_sigframe(&ksig->ka, regs, sizeof(*frame), &fp);
582 restorer = ksig->ka.sa.sa_restorer;
588 if (ksig->ka.sa.sa_flags & SA_SIGINFO) {
589 if (x32_copy_siginfo_to_user(&frame->info, &ksig->info))
595 regs->ip = (unsigned long) ksig->ka.sa.sa_handler;
598 regs->di = ksig->sig;
682 static inline int is_ia32_compat_frame(struct ksignal *ksig)
685 ksig->ka.sa.sa_flags & SA_IA32_ABI;
688 static inline int is_ia32_frame(struct ksignal *ksig)
690 return IS_ENABLED(CONFIG_X86_32) || is_ia32_compat_frame(ksig);
693 static inline int is_x32_frame(struct ksignal *ksig)
696 ksig->ka.sa.sa_flags & SA_X32_ABI;
700 setup_rt_frame(struct ksignal *ksig, struct pt_regs *regs)
702 int usig = ksig->sig;
707 rseq_signal_deliver(ksig, regs);
710 if (is_ia32_frame(ksig)) {
711 if (ksig->ka.sa.sa_flags & SA_SIGINFO)
712 return ia32_setup_rt_frame(usig, ksig, cset, regs);
714 return ia32_setup_frame(usig, ksig, cset, regs);
715 } else if (is_x32_frame(ksig)) {
716 return x32_setup_rt_frame(ksig, cset, regs);
718 return __setup_rt_frame(ksig->sig, ksig, set, regs);
723 handle_signal(struct ksignal *ksig, struct pt_regs *regs)
741 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) {
762 failed = (setup_rt_frame(ksig, regs) < 0);
780 signal_setup_done(failed, ksig, stepping);
803 struct ksignal ksig;
805 if (has_signal && get_signal(&ksig)) {
807 handle_signal(&ksig, regs);