Lines Matching refs:t

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()
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()
74 if (unlikely(t->signal->flags & SIGNAL_UNKILLABLE) && 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()
97 return !t->ptrace; in sig_ignored()
132 static int recalc_sigpending_tsk(struct task_struct *t) in recalc_sigpending_tsk() argument
134 if ((t->jobctl & JOBCTL_PENDING_MASK) || in recalc_sigpending_tsk()
135 PENDING(&t->pending, &t->blocked) || in recalc_sigpending_tsk()
136 PENDING(&t->signal->shared_pending, &t->blocked)) { in recalc_sigpending_tsk()
137 set_tsk_thread_flag(t, TIF_SIGPENDING); in recalc_sigpending_tsk()
152 void recalc_sigpending_and_wake(struct task_struct *t) in recalc_sigpending_and_wake() argument
154 if (recalc_sigpending_tsk(t)) in recalc_sigpending_and_wake()
155 signal_wake_up(t, 0); in recalc_sigpending_and_wake()
361 __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimit) in __sigqueue_alloc() argument
371 user = get_uid(__task_cred(t)->user); in __sigqueue_alloc()
377 task_rlimit(t, RLIMIT_SIGPENDING)) { in __sigqueue_alloc()
419 void flush_signals(struct task_struct *t) in flush_signals() argument
423 spin_lock_irqsave(&t->sighand->siglock, flags); in flush_signals()
424 clear_tsk_thread_flag(t, TIF_SIGPENDING); in flush_signals()
425 flush_sigqueue(&t->pending); in flush_signals()
426 flush_sigqueue(&t->signal->shared_pending); in flush_signals()
427 spin_unlock_irqrestore(&t->sighand->siglock, flags); in flush_signals()
464 void ignore_signals(struct task_struct *t) in ignore_signals() argument
469 t->sighand->action[i].sa.sa_handler = SIG_IGN; in ignore_signals()
471 flush_signals(t); in ignore_signals()
479 flush_signal_handlers(struct task_struct *t, int force_default) in flush_signal_handlers() argument
482 struct k_sigaction *ka = &t->sighand->action[0]; in flush_signal_handlers()
639 void signal_wake_up_state(struct task_struct *t, unsigned int state) in signal_wake_up_state() argument
641 set_tsk_thread_flag(t, TIF_SIGPENDING); in signal_wake_up_state()
649 if (!wake_up_state(t, state | TASK_INTERRUPTIBLE)) in signal_wake_up_state()
650 kick_process(t); in signal_wake_up_state()
692 static int kill_ok_by_cred(struct task_struct *t) in kill_ok_by_cred() argument
695 const struct cred *tcred = __task_cred(t); in kill_ok_by_cred()
714 struct task_struct *t) in check_kill_permission() argument
725 error = audit_signal_info(sig, t); /* Let audit system see the signal */ in check_kill_permission()
729 if (!same_thread_group(current, t) && in check_kill_permission()
730 !kill_ok_by_cred(t)) { in check_kill_permission()
733 sid = task_session(t); in check_kill_permission()
745 return security_task_kill(t, info, sig, 0); in check_kill_permission()
765 static void ptrace_trap_notify(struct task_struct *t) in ptrace_trap_notify() argument
767 WARN_ON_ONCE(!(t->ptrace & PT_SEIZED)); in ptrace_trap_notify()
768 assert_spin_locked(&t->sighand->siglock); in ptrace_trap_notify()
770 task_set_jobctl_pending(t, JOBCTL_TRAP_NOTIFY); in ptrace_trap_notify()
771 ptrace_signal_wake_up(t, t->jobctl & JOBCTL_LISTENING); in ptrace_trap_notify()
787 struct task_struct *t; in prepare_signal() local
802 for_each_thread(p, t) in prepare_signal()
803 flush_sigqueue_mask(&flush, &t->pending); in prepare_signal()
811 for_each_thread(p, t) { in prepare_signal()
812 flush_sigqueue_mask(&flush, &t->pending); in prepare_signal()
813 task_clear_jobctl_pending(t, JOBCTL_STOP_PENDING); in prepare_signal()
814 if (likely(!(t->ptrace & PT_SEIZED))) in prepare_signal()
815 wake_up_state(t, __TASK_STOPPED); in prepare_signal()
817 ptrace_trap_notify(t); in prepare_signal()
873 struct task_struct *t; in complete_signal() local
882 t = p; in complete_signal()
893 t = signal->curr_target; in complete_signal()
894 while (!wants_signal(sig, t)) { in complete_signal()
895 t = next_thread(t); in complete_signal()
896 if (t == signal->curr_target) in complete_signal()
904 signal->curr_target = t; in complete_signal()
913 !sigismember(&t->real_blocked, sig) && in complete_signal()
914 (sig == SIGKILL || !t->ptrace)) { in complete_signal()
928 t = p; in complete_signal()
930 task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK); in complete_signal()
931 sigaddset(&t->pending.signal, SIGKILL); in complete_signal()
932 signal_wake_up(t, 1); in complete_signal()
933 } while_each_thread(p, t); in complete_signal()
942 signal_wake_up(t, sig == SIGKILL); in complete_signal()
952 static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t) in userns_fixup_signal_uid() argument
954 if (current_user_ns() == task_cred_xxx(t, user_ns)) in userns_fixup_signal_uid()
961 info->si_uid = from_kuid_munged(task_cred_xxx(t, user_ns), in userns_fixup_signal_uid()
966 static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t) in userns_fixup_signal_uid() argument
972 static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, in __send_signal() argument
980 assert_spin_locked(&t->sighand->siglock); in __send_signal()
983 if (!prepare_signal(sig, t, in __send_signal()
987 pending = group ? &t->signal->shared_pending : &t->pending; in __send_signal()
1019 q = __sigqueue_alloc(sig, t, GFP_ATOMIC | __GFP_NOTRACK_FALSE_POSITIVE, in __send_signal()
1029 task_active_pid_ns(t)); in __send_signal()
1046 userns_fixup_signal_uid(&q->info, t); in __send_signal()
1068 signalfd_notify(t, sig); in __send_signal()
1070 complete_signal(sig, t, group); in __send_signal()
1072 trace_signal_generate(sig, info, t, group, result); in __send_signal()
1076 static int send_signal(int sig, struct siginfo *info, struct task_struct *t, in send_signal() argument
1083 !task_pid_nr_ns(current, task_active_pid_ns(t)); in send_signal()
1086 return __send_signal(sig, info, t, group, from_ancestor_ns); in send_signal()
1129 specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t) in specific_send_sig_info() argument
1131 return send_signal(sig, info, t, 0); in specific_send_sig_info()
1160 force_sig_info(int sig, struct siginfo *info, struct task_struct *t) in force_sig_info() argument
1166 spin_lock_irqsave(&t->sighand->siglock, flags); in force_sig_info()
1167 action = &t->sighand->action[sig-1]; in force_sig_info()
1169 blocked = sigismember(&t->blocked, sig); in force_sig_info()
1173 sigdelset(&t->blocked, sig); in force_sig_info()
1174 recalc_sigpending_and_wake(t); in force_sig_info()
1178 t->signal->flags &= ~SIGNAL_UNKILLABLE; in force_sig_info()
1179 ret = specific_send_sig_info(sig, info, t); in force_sig_info()
1180 spin_unlock_irqrestore(&t->sighand->siglock, flags); in force_sig_info()
1190 struct task_struct *t = p; in zap_other_threads() local
1195 while_each_thread(p, t) { in zap_other_threads()
1196 task_clear_jobctl_pending(t, JOBCTL_PENDING_MASK); in zap_other_threads()
1200 if (t->exit_state) in zap_other_threads()
1202 sigaddset(&t->pending.signal, SIGKILL); in zap_other_threads()
1203 signal_wake_up(t, 1); in zap_other_threads()
1521 int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) in send_sigqueue() argument
1531 if (!likely(lock_task_sighand(t, &flags))) in send_sigqueue()
1536 if (!prepare_signal(sig, t, false)) in send_sigqueue()
1552 signalfd_notify(t, sig); in send_sigqueue()
1553 pending = group ? &t->signal->shared_pending : &t->pending; in send_sigqueue()
1556 complete_signal(sig, t, group); in send_sigqueue()
1559 trace_signal_generate(sig, &q->info, t, group, result); in send_sigqueue()
1560 unlock_task_sighand(t, &flags); in send_sigqueue()
1953 struct task_struct *t; in do_signal_stop() local
1988 t = current; in do_signal_stop()
1989 while_each_thread(current, t) { in do_signal_stop()
1995 if (!task_is_stopped(t) && in do_signal_stop()
1996 task_set_jobctl_pending(t, signr | gstop)) { in do_signal_stop()
1998 if (likely(!(t->ptrace & PT_SEIZED))) in do_signal_stop()
1999 signal_wake_up(t, 0); in do_signal_stop()
2001 ptrace_trap_notify(t); in do_signal_stop()
2359 struct task_struct *t; in retarget_shared_pending() local
2365 t = tsk; in retarget_shared_pending()
2366 while_each_thread(tsk, t) { in retarget_shared_pending()
2367 if (t->flags & PF_EXITING) in retarget_shared_pending()
2370 if (!has_pending_signals(&retarget, &t->blocked)) in retarget_shared_pending()
2373 sigandsets(&retarget, &retarget, &t->blocked); in retarget_shared_pending()
2375 if (!signal_pending(t)) in retarget_shared_pending()
2376 signal_wake_up(t, 0); in retarget_shared_pending()
3049 struct task_struct *p = current, *t; in do_sigaction() local
3081 for_each_thread(p, t) in do_sigaction()
3082 flush_sigqueue_mask(&mask, &t->pending); in do_sigaction()
3169 struct task_struct *t = current; in __save_altstack() local
3170 return __put_user((void __user *)t->sas_ss_sp, &uss->ss_sp) | in __save_altstack()
3172 __put_user(t->sas_ss_size, &uss->ss_size); in __save_altstack()
3219 struct task_struct *t = current; in __compat_save_altstack() local
3220 return __put_user(ptr_to_compat((void __user *)t->sas_ss_sp), &uss->ss_sp) | in __compat_save_altstack()
3222 __put_user(t->sas_ss_size, &uss->ss_size); in __compat_save_altstack()
3594 kdb_send_sig_info(struct task_struct *t, struct siginfo *info) in kdb_send_sig_info() argument
3598 if (!spin_trylock(&t->sighand->siglock)) { in kdb_send_sig_info()
3604 spin_unlock(&t->sighand->siglock); in kdb_send_sig_info()
3605 new_t = kdb_prev_t != t; in kdb_send_sig_info()
3606 kdb_prev_t = t; in kdb_send_sig_info()
3607 if (t->state != TASK_RUNNING && new_t) { in kdb_send_sig_info()
3617 if (send_sig_info(sig, info, t)) in kdb_send_sig_info()
3619 sig, t->pid); in kdb_send_sig_info()
3621 kdb_printf("Signal %d is sent to process %d.\n", sig, t->pid); in kdb_send_sig_info()