Lines Matching refs:sig

56 static void __user *sig_handler(struct task_struct *t, int sig)  in sig_handler()  argument
58 return t->sighand->action[sig - 1].sa.sa_handler; in sig_handler()
61 static int sig_handler_ignored(void __user *handler, int sig) in sig_handler_ignored() argument
65 (handler == SIG_DFL && sig_kernel_ignore(sig)); in sig_handler_ignored()
68 static int sig_task_ignored(struct task_struct *t, int sig, bool force) in sig_task_ignored() argument
72 handler = sig_handler(t, sig); in sig_task_ignored()
78 return sig_handler_ignored(handler, sig); in sig_task_ignored()
81 static int sig_ignored(struct task_struct *t, int sig, bool force) in sig_ignored() argument
88 if (sigismember(&t->blocked, sig) || sigismember(&t->real_blocked, sig)) in sig_ignored()
91 if (!sig_task_ignored(t, sig, force)) in sig_ignored()
112 ready |= signal->sig[i] &~ blocked->sig[i]; in has_pending_signals()
115 case 4: ready = signal->sig[3] &~ blocked->sig[3]; in has_pending_signals()
116 ready |= signal->sig[2] &~ blocked->sig[2]; in has_pending_signals()
117 ready |= signal->sig[1] &~ blocked->sig[1]; in has_pending_signals()
118 ready |= signal->sig[0] &~ blocked->sig[0]; in has_pending_signals()
121 case 2: ready = signal->sig[1] &~ blocked->sig[1]; in has_pending_signals()
122 ready |= signal->sig[0] &~ blocked->sig[0]; in has_pending_signals()
125 case 1: ready = signal->sig[0] &~ blocked->sig[0]; in has_pending_signals()
174 int sig = 0; in next_signal() local
176 s = pending->signal.sig; in next_signal()
177 m = mask->sig; in next_signal()
187 sig = ffz(~x) + 1; in next_signal()
188 return sig; in next_signal()
197 sig = ffz(~x) + i*_NSIG_BPW + 1; in next_signal()
206 sig = ffz(~x) + _NSIG_BPW + 1; in next_signal()
214 return sig; in next_signal()
217 static inline void print_dropped_signal(int sig) in print_dropped_signal() argument
228 current->comm, current->pid, sig); in print_dropped_signal()
331 struct signal_struct *sig = task->signal; in task_participate_group_stop() local
341 if (!WARN_ON_ONCE(sig->group_stop_count == 0)) in task_participate_group_stop()
342 sig->group_stop_count--; in task_participate_group_stop()
348 if (!sig->group_stop_count && !(sig->flags & SIGNAL_STOP_STOPPED)) { in task_participate_group_stop()
349 sig->flags = SIGNAL_STOP_STOPPED; in task_participate_group_stop()
361 __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit) in __sigqueue_alloc() argument
380 print_dropped_signal(sig); in __sigqueue_alloc()
444 int sig = q->info.si_signo; in __flush_itimer_signals() local
447 sigaddset(&retain, sig); in __flush_itimer_signals()
449 sigdelset(&signal, sig); in __flush_itimer_signals()
500 int unhandled_signal(struct task_struct *tsk, int sig) in unhandled_signal() argument
502 void __user *handler = tsk->sighand->action[sig-1].sa.sa_handler; in unhandled_signal()
546 static void collect_signal(int sig, struct sigpending *list, siginfo_t *info) in collect_signal() argument
555 if (q->info.si_signo == sig) { in collect_signal()
562 sigdelset(&list->signal, sig); in collect_signal()
575 info->si_signo = sig; in collect_signal()
586 int sig = next_signal(pending, mask); in __dequeue_signal() local
588 if (sig) { in __dequeue_signal()
590 if (sigismember(current->notifier_mask, sig)) { in __dequeue_signal()
598 collect_signal(sig, pending, info); in __dequeue_signal()
601 return sig; in __dequeue_signal()
764 static int check_kill_permission(int sig, struct siginfo *info, in check_kill_permission() argument
770 if (!valid_signal(sig)) in check_kill_permission()
776 error = audit_signal_info(sig, t); /* Let audit system see the signal */ in check_kill_permission()
782 switch (sig) { in check_kill_permission()
796 return security_task_kill(t, info, sig, 0); in check_kill_permission()
835 static bool prepare_signal(int sig, struct task_struct *p, bool force) in prepare_signal() argument
843 return sig == SIGKILL; in prepare_signal()
847 } else if (sig_kernel_stop(sig)) { in prepare_signal()
855 } else if (sig == SIGCONT) { in prepare_signal()
897 return !sig_ignored(p, sig, force); in prepare_signal()
908 static inline int wants_signal(int sig, struct task_struct *p) in wants_signal() argument
910 if (sigismember(&p->blocked, sig)) in wants_signal()
914 if (sig == SIGKILL) in wants_signal()
921 static void complete_signal(int sig, struct task_struct *p, int group) in complete_signal() argument
932 if (wants_signal(sig, p)) in complete_signal()
945 while (!wants_signal(sig, t)) { in complete_signal()
962 if (sig_fatal(p, sig) && in complete_signal()
964 !sigismember(&t->real_blocked, sig) && in complete_signal()
965 (sig == SIGKILL || !t->ptrace)) { in complete_signal()
969 if (!sig_kernel_coredump(sig)) { in complete_signal()
977 signal->group_exit_code = sig; in complete_signal()
993 signal_wake_up(t, sig == SIGKILL); in complete_signal()
997 static inline int legacy_queue(struct sigpending *signals, int sig) in legacy_queue() argument
999 return (sig < SIGRTMIN) && sigismember(&signals->signal, sig); in legacy_queue()
1023 static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, in __send_signal() argument
1034 if (!prepare_signal(sig, t, in __send_signal()
1045 if (legacy_queue(pending, sig)) in __send_signal()
1065 if (sig < SIGRTMIN) in __send_signal()
1070 q = __sigqueue_alloc(sig, t, GFP_ATOMIC | __GFP_NOTRACK_FALSE_POSITIVE, in __send_signal()
1076 q->info.si_signo = sig; in __send_signal()
1084 q->info.si_signo = sig; in __send_signal()
1100 if (sig >= SIGRTMIN && info->si_code != SI_USER) { in __send_signal()
1119 signalfd_notify(t, sig); in __send_signal()
1120 sigaddset(&pending->signal, sig); in __send_signal()
1121 complete_signal(sig, t, group); in __send_signal()
1123 trace_signal_generate(sig, info, t, group, result); in __send_signal()
1127 static int send_signal(int sig, struct siginfo *info, struct task_struct *t, in send_signal() argument
1137 return __send_signal(sig, info, t, group, from_ancestor_ns); in send_signal()
1174 __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) in __group_send_sig_info() argument
1176 return send_signal(sig, info, p, 1); in __group_send_sig_info()
1180 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t) in specific_send_sig_info() argument
1182 return send_signal(sig, info, t, 0); in specific_send_sig_info()
1185 int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, in do_send_sig_info() argument
1192 ret = send_signal(sig, info, p, group); in do_send_sig_info()
1211 force_sig_info(int sig, struct siginfo *info, struct task_struct *t) in force_sig_info() argument
1218 action = &t->sighand->action[sig-1]; in force_sig_info()
1220 blocked = sigismember(&t->blocked, sig); in force_sig_info()
1224 sigdelset(&t->blocked, sig); in force_sig_info()
1230 ret = specific_send_sig_info(sig, info, t); in force_sig_info()
1305 int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) in group_send_sig_info() argument
1310 ret = check_kill_permission(sig, info, p); in group_send_sig_info()
1313 if (!ret && sig) in group_send_sig_info()
1314 ret = do_send_sig_info(sig, info, p, true); in group_send_sig_info()
1324 int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp) in __kill_pgrp_info() argument
1332 int err = group_send_sig_info(sig, info, p); in __kill_pgrp_info()
1339 int kill_pid_info(int sig, struct siginfo *info, struct pid *pid) in kill_pid_info() argument
1348 error = group_send_sig_info(sig, info, p); in kill_pid_info()
1361 int kill_proc_info(int sig, struct siginfo *info, pid_t pid) in kill_proc_info() argument
1365 error = kill_pid_info(sig, info, find_vpid(pid)); in kill_proc_info()
1381 int kill_pid_info_as_cred(int sig, struct siginfo *info, struct pid *pid, in kill_pid_info_as_cred() argument
1388 if (!valid_signal(sig)) in kill_pid_info_as_cred()
1401 ret = security_task_kill(p, info, sig, secid); in kill_pid_info_as_cred()
1405 if (sig) { in kill_pid_info_as_cred()
1407 ret = __send_signal(sig, info, p, 1, 0); in kill_pid_info_as_cred()
1425 static int kill_something_info(int sig, struct siginfo *info, pid_t pid) in kill_something_info() argument
1431 ret = kill_pid_info(sig, info, find_vpid(pid)); in kill_something_info()
1438 ret = __kill_pgrp_info(sig, info, in kill_something_info()
1447 int err = group_send_sig_info(sig, info, p); in kill_something_info()
1464 int send_sig_info(int sig, struct siginfo *info, struct task_struct *p) in send_sig_info() argument
1470 if (!valid_signal(sig)) in send_sig_info()
1473 return do_send_sig_info(sig, info, p, false); in send_sig_info()
1480 send_sig(int sig, struct task_struct *p, int priv) in send_sig() argument
1482 return send_sig_info(sig, __si_special(priv), p); in send_sig()
1486 force_sig(int sig, struct task_struct *p) in force_sig() argument
1488 force_sig_info(sig, SEND_SIG_PRIV, p); in force_sig()
1498 force_sigsegv(int sig, struct task_struct *p) in force_sigsegv() argument
1500 if (sig == SIGSEGV) { in force_sigsegv()
1503 p->sighand->action[sig - 1].sa.sa_handler = SIG_DFL; in force_sigsegv()
1510 int kill_pgrp(struct pid *pid, int sig, int priv) in kill_pgrp() argument
1515 ret = __kill_pgrp_info(sig, __si_special(priv), pid); in kill_pgrp()
1522 int kill_pid(struct pid *pid, int sig, int priv) in kill_pid() argument
1524 return kill_pid_info(sig, __si_special(priv), pid); in kill_pid()
1574 int sig = q->info.si_signo; in send_sigqueue() local
1587 if (!prepare_signal(sig, t, false)) in send_sigqueue()
1603 signalfd_notify(t, sig); in send_sigqueue()
1606 sigaddset(&pending->signal, sig); in send_sigqueue()
1607 complete_signal(sig, t, group); in send_sigqueue()
1610 trace_signal_generate(sig, &q->info, t, group, result); in send_sigqueue()
1623 bool do_notify_parent(struct task_struct *tsk, int sig) in do_notify_parent() argument
1631 BUG_ON(sig == -1); in do_notify_parent()
1639 if (sig != SIGCHLD) { in do_notify_parent()
1645 sig = SIGCHLD; in do_notify_parent()
1648 info.si_signo = sig; in do_notify_parent()
1683 if (!tsk->ptrace && sig == SIGCHLD && in do_notify_parent()
1703 sig = 0; in do_notify_parent()
1705 if (valid_signal(sig) && sig) in do_notify_parent()
1706 __group_send_sig_info(sig, &info, tsk->parent); in do_notify_parent()
2000 struct signal_struct *sig = current->signal; in do_signal_stop() local
2010 unlikely(signal_group_exit(sig))) in do_signal_stop()
2031 if (!(sig->flags & SIGNAL_STOP_STOPPED)) in do_signal_stop()
2032 sig->group_exit_code = signr; in do_signal_stop()
2034 sig->group_stop_count = 0; in do_signal_stop()
2037 sig->group_stop_count++; in do_signal_stop()
2048 sig->group_stop_count++; in do_signal_stop()
2363 ksig->sig = signr; in get_signal()
2364 return ksig->sig > 0; in get_signal()
2389 sigaddset(&blocked, ksig->sig); in signal_delivered()
2397 force_sigsegv(ksig->sig, current); in signal_setup_done()
2809 int sig; in do_sigtimedwait() local
2830 sig = dequeue_signal(tsk, &mask, info); in do_sigtimedwait()
2831 if (!sig && timeout) { in do_sigtimedwait()
2848 sig = dequeue_signal(tsk, &mask, info); in do_sigtimedwait()
2852 if (sig) in do_sigtimedwait()
2853 return sig; in do_sigtimedwait()
2901 SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) in SYSCALL_DEFINE2() argument
2905 info.si_signo = sig; in SYSCALL_DEFINE2()
2911 return kill_something_info(sig, &info, pid); in SYSCALL_DEFINE2()
2915 do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) in do_send_specific() argument
2923 error = check_kill_permission(sig, info, p); in do_send_specific()
2928 if (!error && sig) { in do_send_specific()
2929 error = do_send_sig_info(sig, info, p, false); in do_send_specific()
2944 static int do_tkill(pid_t tgid, pid_t pid, int sig) in do_tkill() argument
2948 info.si_signo = sig; in do_tkill()
2954 return do_send_specific(tgid, pid, sig, &info); in do_tkill()
2967 SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig) in SYSCALL_DEFINE3() argument
2973 return do_tkill(tgid, pid, sig); in SYSCALL_DEFINE3()
2983 SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) in SYSCALL_DEFINE2() argument
2989 return do_tkill(0, pid, sig); in SYSCALL_DEFINE2()
2992 static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info) in do_rt_sigqueueinfo() argument
3001 info->si_signo = sig; in do_rt_sigqueueinfo()
3004 return kill_proc_info(sig, info, pid); in do_rt_sigqueueinfo()
3013 SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, in SYSCALL_DEFINE3() argument
3019 return do_rt_sigqueueinfo(pid, sig, &info); in SYSCALL_DEFINE3()
3025 int, sig, in COMPAT_SYSCALL_DEFINE3()
3032 return do_rt_sigqueueinfo(pid, sig, &info); in COMPAT_SYSCALL_DEFINE3()
3036 static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) in do_rt_tgsigqueueinfo() argument
3049 info->si_signo = sig; in do_rt_tgsigqueueinfo()
3051 return do_send_specific(tgid, pid, sig, info); in do_rt_tgsigqueueinfo()
3054 SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig, in SYSCALL_DEFINE4() argument
3062 return do_rt_tgsigqueueinfo(tgid, pid, sig, &info); in SYSCALL_DEFINE4()
3069 int, sig, in COMPAT_SYSCALL_DEFINE4()
3076 return do_rt_tgsigqueueinfo(tgid, pid, sig, &info); in COMPAT_SYSCALL_DEFINE4()
3083 void kernel_sigaction(int sig, __sighandler_t action) in kernel_sigaction() argument
3086 current->sighand->action[sig - 1].sa.sa_handler = action; in kernel_sigaction()
3091 sigaddset(&mask, sig); in kernel_sigaction()
3101 int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact) in do_sigaction() argument
3107 if (!valid_signal(sig) || sig < 1 || (act && sig_kernel_only(sig))) in do_sigaction()
3110 k = &p->sighand->action[sig-1]; in do_sigaction()
3131 if (sig_handler_ignored(sig_handler(p, sig), sig)) { in do_sigaction()
3133 sigaddset(&mask, sig); in do_sigaction()
3310 old_set = current->blocked.sig[0]; in SYSCALL_DEFINE3()
3326 new_blocked.sig[0] = new_set; in SYSCALL_DEFINE3()
3352 SYSCALL_DEFINE4(rt_sigaction, int, sig, in SYSCALL_DEFINE4() argument
3369 ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL); in SYSCALL_DEFINE4()
3379 COMPAT_SYSCALL_DEFINE4(rt_sigaction, int, sig, in COMPAT_SYSCALL_DEFINE4() argument
3410 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); in COMPAT_SYSCALL_DEFINE4()
3428 SYSCALL_DEFINE3(sigaction, int, sig, in SYSCALL_DEFINE3() argument
3449 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); in SYSCALL_DEFINE3()
3456 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) in SYSCALL_DEFINE3()
3464 COMPAT_SYSCALL_DEFINE3(sigaction, int, sig, in COMPAT_SYSCALL_DEFINE3() argument
3489 ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); in COMPAT_SYSCALL_DEFINE3()
3498 __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) in COMPAT_SYSCALL_DEFINE3()
3513 return current->blocked.sig[0]; in SYSCALL_DEFINE0()
3518 int old = current->blocked.sig[0]; in SYSCALL_DEFINE1()
3532 SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) in SYSCALL_DEFINE2() argument
3541 ret = do_sigaction(sig, &new_sa, &old_sa); in SYSCALL_DEFINE2()
3651 int sig, new_t; in kdb_send_sig_info() local
3670 sig = info->si_signo; in kdb_send_sig_info()
3671 if (send_sig_info(sig, info, t)) in kdb_send_sig_info()
3673 sig, t->pid); in kdb_send_sig_info()
3675 kdb_printf("Signal %d is sent to process %d.\n", sig, t->pid); in kdb_send_sig_info()