Lines Matching refs:tsk

159 static void __exit_signal(struct release_task_post *post, struct task_struct *tsk)  in __exit_signal()  argument
161 struct signal_struct *sig = tsk->signal; in __exit_signal()
162 bool group_dead = thread_group_leader(tsk); in __exit_signal()
167 sighand = rcu_dereference_check(tsk->sighand, in __exit_signal()
172 posix_cpu_timers_exit(tsk); in __exit_signal()
174 posix_cpu_timers_exit_group(tsk); in __exit_signal()
188 if (tsk == sig->curr_target) in __exit_signal()
189 sig->curr_target = next_thread(tsk); in __exit_signal()
198 task_cputime(tsk, &utime, &stime); in __exit_signal()
202 sig->gtime += task_gtime(tsk); in __exit_signal()
203 sig->min_flt += tsk->min_flt; in __exit_signal()
204 sig->maj_flt += tsk->maj_flt; in __exit_signal()
205 sig->nvcsw += tsk->nvcsw; in __exit_signal()
206 sig->nivcsw += tsk->nivcsw; in __exit_signal()
207 sig->inblock += task_io_get_inblock(tsk); in __exit_signal()
208 sig->oublock += task_io_get_oublock(tsk); in __exit_signal()
209 task_io_accounting_add(&sig->ioac, &tsk->ioac); in __exit_signal()
210 sig->sum_sched_runtime += tsk->se.sum_exec_runtime; in __exit_signal()
212 __unhash_process(post, tsk, group_dead); in __exit_signal()
215 tsk->sighand = NULL; in __exit_signal()
225 struct task_struct *tsk = container_of(rhp, struct task_struct, rcu); in delayed_put_task_struct() local
227 kprobe_flush_task(tsk); in delayed_put_task_struct()
228 rethook_flush_task(tsk); in delayed_put_task_struct()
229 perf_event_delayed_put(tsk); in delayed_put_task_struct()
230 trace_sched_process_free(tsk); in delayed_put_task_struct()
231 put_task_struct(tsk); in delayed_put_task_struct()
399 kill_orphaned_pgrp(struct task_struct *tsk, struct task_struct *parent) in kill_orphaned_pgrp() argument
401 struct pid *pgrp = task_pgrp(tsk); in kill_orphaned_pgrp()
402 struct task_struct *ignored_task = tsk; in kill_orphaned_pgrp()
408 parent = tsk->real_parent; in kill_orphaned_pgrp()
416 task_session(parent) == task_session(tsk) && in kill_orphaned_pgrp()
424 static void coredump_task_exit(struct task_struct *tsk, in coredump_task_exit() argument
429 self.task = tsk; in coredump_task_exit()
452 static bool __try_to_set_owner(struct task_struct *tsk, struct mm_struct *mm) in __try_to_set_owner() argument
456 task_lock(tsk); in __try_to_set_owner()
457 if (likely(tsk->mm == mm)) { in __try_to_set_owner()
460 WRITE_ONCE(mm->owner, tsk); in __try_to_set_owner()
464 task_unlock(tsk); in __try_to_set_owner()
736 static void exit_notify(struct task_struct *tsk, int group_dead) in exit_notify() argument
743 forget_original_parent(tsk, &dead); in exit_notify()
746 kill_orphaned_pgrp(tsk->group_leader, NULL); in exit_notify()
748 tsk->exit_state = EXIT_ZOMBIE; in exit_notify()
750 if (unlikely(tsk->ptrace)) { in exit_notify()
751 int sig = thread_group_leader(tsk) && in exit_notify()
752 thread_group_empty(tsk) && in exit_notify()
753 !ptrace_reparented(tsk) ? in exit_notify()
754 tsk->exit_signal : SIGCHLD; in exit_notify()
755 autoreap = do_notify_parent(tsk, sig); in exit_notify()
756 } else if (thread_group_leader(tsk)) { in exit_notify()
757 autoreap = thread_group_empty(tsk) && in exit_notify()
758 do_notify_parent(tsk, tsk->exit_signal); in exit_notify()
762 do_notify_pidfd(tsk); in exit_notify()
766 tsk->exit_state = EXIT_DEAD; in exit_notify()
767 list_add(&tsk->ptrace_entry, &dead); in exit_notify()
771 if (unlikely(tsk->signal->notify_count < 0)) in exit_notify()
772 wake_up_process(tsk->signal->group_exec_task); in exit_notify()
867 static void synchronize_group_exit(struct task_struct *tsk, long code) in synchronize_group_exit() argument
869 struct sighand_struct *sighand = tsk->sighand; in synchronize_group_exit()
870 struct signal_struct *signal = tsk->signal; in synchronize_group_exit()
888 tsk->flags |= PF_POSTCOREDUMP; in synchronize_group_exit()
893 coredump_task_exit(tsk, core_state); in synchronize_group_exit()
898 struct task_struct *tsk = current; in do_exit() local
902 WARN_ON(tsk->plug); in do_exit()
904 kcov_task_exit(tsk); in do_exit()
905 kmsan_task_exit(tsk); in do_exit()
907 synchronize_group_exit(tsk, code); in do_exit()
909 user_events_exit(tsk); in do_exit()
912 sched_mm_cid_exit(tsk); in do_exit()
913 exit_signals(tsk); /* sets PF_EXITING */ in do_exit()
915 seccomp_filter_release(tsk); in do_exit()
917 acct_update_integrals(tsk); in do_exit()
918 group_dead = atomic_dec_and_test(&tsk->signal->live); in do_exit()
924 if (unlikely(is_global_init(tsk))) in do_exit()
926 tsk->signal->group_exit_code ?: (int)code); in do_exit()
929 hrtimer_cancel(&tsk->signal->real_timer); in do_exit()
930 exit_itimers(tsk); in do_exit()
932 if (tsk->mm) in do_exit()
933 setmax_mm_hiwater_rss(&tsk->signal->maxrss, tsk->mm); in do_exit()
938 audit_free(tsk); in do_exit()
940 tsk->exit_code = code; in do_exit()
941 taskstats_exit(tsk, group_dead); in do_exit()
942 trace_sched_process_exit(tsk, group_dead); in do_exit()
951 perf_event_exit_task(tsk); in do_exit()
957 unwind_deferred_task_exit(tsk); in do_exit()
964 exit_sem(tsk); in do_exit()
965 exit_shm(tsk); in do_exit()
966 exit_files(tsk); in do_exit()
967 exit_fs(tsk); in do_exit()
970 exit_nsproxy_namespaces(tsk); in do_exit()
971 exit_task_work(tsk); in do_exit()
972 exit_thread(tsk); in do_exit()
974 sched_autogroup_exit_task(tsk); in do_exit()
975 cgroup_task_exit(tsk); in do_exit()
980 flush_ptrace_hw_breakpoint(tsk); in do_exit()
983 exit_notify(tsk, group_dead); in do_exit()
984 proc_exit_connector(tsk); in do_exit()
985 mpol_put_task_policy(tsk); in do_exit()
995 if (tsk->io_context) in do_exit()
996 exit_io_context(tsk); in do_exit()
998 if (tsk->splice_pipe) in do_exit()
999 free_pipe_info(tsk->splice_pipe); in do_exit()
1001 if (tsk->task_frag.page) in do_exit()
1002 put_page(tsk->task_frag.page); in do_exit()
1004 exit_task_stack_account(tsk); in do_exit()
1008 if (tsk->nr_dirtied) in do_exit()
1009 __this_cpu_add(dirty_throttle_leaks, tsk->nr_dirtied); in do_exit()
1013 lockdep_free_task(tsk); in do_exit()
1028 struct task_struct *tsk = current; in make_task_dead() local
1033 if (unlikely(!tsk->pid)) in make_task_dead()
1066 if (unlikely(tsk->flags & PF_EXITING)) { in make_task_dead()
1068 futex_exit_recursive(tsk); in make_task_dead()
1069 tsk->exit_state = EXIT_DEAD; in make_task_dead()
1070 refcount_inc(&tsk->rcu_users); in make_task_dead()
1559 static int do_wait_thread(struct wait_opts *wo, struct task_struct *tsk) in do_wait_thread() argument
1563 list_for_each_entry(p, &tsk->children, sibling) { in do_wait_thread()
1573 static int ptrace_do_wait(struct wait_opts *wo, struct task_struct *tsk) in ptrace_do_wait() argument
1577 list_for_each_entry(p, &tsk->ptraced, ptrace_entry) { in ptrace_do_wait()
1679 struct task_struct *tsk = current; in __do_wait() local
1682 retval = do_wait_thread(wo, tsk); in __do_wait()
1686 retval = ptrace_do_wait(wo, tsk); in __do_wait()
1692 } while_each_thread(current, tsk); in __do_wait()