File Index
Files and directories
Sign in
FILE

exit.c

File preview with syntax highlighting.

linux-6.19.14/kernel/exit.c C
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 *  linux/kernel/exit.c
   4 *
   5 *  Copyright (C) 1991, 1992  Linus Torvalds
   6 */
   7
   8#include <linux/mm.h>
   9#include <linux/slab.h>
  10#include <linux/sched/autogroup.h>
  11#include <linux/sched/mm.h>
  12#include <linux/sched/stat.h>
  13#include <linux/sched/task.h>
  14#include <linux/sched/task_stack.h>
  15#include <linux/sched/cputime.h>
  16#include <linux/interrupt.h>
  17#include <linux/module.h>
  18#include <linux/capability.h>
  19#include <linux/completion.h>
  20#include <linux/personality.h>
  21#include <linux/tty.h>
  22#include <linux/iocontext.h>
  23#include <linux/key.h>
  24#include <linux/cpu.h>
  25#include <linux/acct.h>
  26#include <linux/tsacct_kern.h>
  27#include <linux/file.h>
  28#include <linux/freezer.h>
  29#include <linux/binfmts.h>
  30#include <linux/nsproxy.h>
  31#include <linux/pid_namespace.h>
  32#include <linux/ptrace.h>
  33#include <linux/profile.h>
  34#include <linux/mount.h>
  35#include <linux/proc_fs.h>
  36#include <linux/kthread.h>
  37#include <linux/mempolicy.h>
  38#include <linux/taskstats_kern.h>
  39#include <linux/delayacct.h>
  40#include <linux/cgroup.h>
  41#include <linux/syscalls.h>
  42#include <linux/signal.h>
  43#include <linux/posix-timers.h>
  44#include <linux/cn_proc.h>
  45#include <linux/mutex.h>
  46#include <linux/futex.h>
  47#include <linux/pipe_fs_i.h>
  48#include <linux/audit.h> /* for audit_free() */
  49#include <linux/resource.h>
  50#include <linux/task_io_accounting_ops.h>
  51#include <linux/blkdev.h>
  52#include <linux/task_work.h>
  53#include <linux/fs_struct.h>
  54#include <linux/init_task.h>
  55#include <linux/perf_event.h>
  56#include <trace/events/sched.h>
  57#include <linux/hw_breakpoint.h>
  58#include <linux/oom.h>
  59#include <linux/writeback.h>
  60#include <linux/shm.h>
  61#include <linux/kcov.h>
  62#include <linux/kmsan.h>
  63#include <linux/random.h>
  64#include <linux/rcuwait.h>
  65#include <linux/compat.h>
  66#include <linux/io_uring.h>
  67#include <linux/kprobes.h>
  68#include <linux/rethook.h>
  69#include <linux/sysfs.h>
  70#include <linux/user_events.h>
  71#include <linux/unwind_deferred.h>
  72#include <linux/uaccess.h>
  73#include <linux/pidfs.h>
  74
  75#include <uapi/linux/wait.h>
  76
  77#include <asm/unistd.h>
  78#include <asm/mmu_context.h>
  79
  80#include "exit.h"
  81
  82/*
  83 * The default value should be high enough to not crash a system that randomly
  84 * crashes its kernel from time to time, but low enough to at least not permit
  85 * overflowing 32-bit refcounts or the ldsem writer count.
  86 */
  87static unsigned int oops_limit = 10000;
  88
  89#ifdef CONFIG_SYSCTL
  90static const struct ctl_table kern_exit_table[] = {
  91	{
  92		.procname       = "oops_limit",
  93		.data           = &oops_limit,
  94		.maxlen         = sizeof(oops_limit),
  95		.mode           = 0644,
  96		.proc_handler   = proc_douintvec,
  97	},
  98};
  99
 100static __init int kernel_exit_sysctls_init(void)
 101{
 102	register_sysctl_init("kernel", kern_exit_table);
 103	return 0;
 104}
 105late_initcall(kernel_exit_sysctls_init);
 106#endif
 107
 108static atomic_t oops_count = ATOMIC_INIT(0);
 109
 110#ifdef CONFIG_SYSFS
 111static ssize_t oops_count_show(struct kobject *kobj, struct kobj_attribute *attr,
 112			       char *page)
 113{
 114	return sysfs_emit(page, "%d\n", atomic_read(&oops_count));
 115}
 116
 117static struct kobj_attribute oops_count_attr = __ATTR_RO(oops_count);
 118
 119static __init int kernel_exit_sysfs_init(void)
 120{
 121	sysfs_add_file_to_group(kernel_kobj, &oops_count_attr.attr, NULL);
 122	return 0;
 123}
 124late_initcall(kernel_exit_sysfs_init);
 125#endif
 126
 127/*
 128 * For things release_task() would like to do *after* tasklist_lock is released.
 129 */
 130struct release_task_post {
 131	struct pid *pids[PIDTYPE_MAX];
 132};
 133
 134static void __unhash_process(struct release_task_post *post, struct task_struct *p,
 135			     bool group_dead)
 136{
 137	struct pid *pid = task_pid(p);
 138
 139	nr_threads--;
 140
 141	detach_pid(post->pids, p, PIDTYPE_PID);
 142	wake_up_all(&pid->wait_pidfd);
 143
 144	if (group_dead) {
 145		detach_pid(post->pids, p, PIDTYPE_TGID);
 146		detach_pid(post->pids, p, PIDTYPE_PGID);
 147		detach_pid(post->pids, p, PIDTYPE_SID);
 148
 149		list_del_rcu(&p->tasks);
 150		list_del_init(&p->sibling);
 151		__this_cpu_dec(process_counts);
 152	}
 153	list_del_rcu(&p->thread_node);
 154}
 155
 156/*
 157 * This function expects the tasklist_lock write-locked.
 158 */
 159static void __exit_signal(struct release_task_post *post, struct task_struct *tsk)
 160{
 161	struct signal_struct *sig = tsk->signal;
 162	bool group_dead = thread_group_leader(tsk);
 163	struct sighand_struct *sighand;
 164	struct tty_struct *tty;
 165	u64 utime, stime;
 166
 167	sighand = rcu_dereference_check(tsk->sighand,
 168					lockdep_tasklist_lock_is_held());
 169	spin_lock(&sighand->siglock);
 170
 171#ifdef CONFIG_POSIX_TIMERS
 172	posix_cpu_timers_exit(tsk);
 173	if (group_dead)
 174		posix_cpu_timers_exit_group(tsk);
 175#endif
 176
 177	if (group_dead) {
 178		tty = sig->tty;
 179		sig->tty = NULL;
 180	} else {
 181		/*
 182		 * If there is any task waiting for the group exit
 183		 * then notify it:
 184		 */
 185		if (sig->notify_count > 0 && !--sig->notify_count)
 186			wake_up_process(sig->group_exec_task);
 187
 188		if (tsk == sig->curr_target)
 189			sig->curr_target = next_thread(tsk);
 190	}
 191
 192	/*
 193	 * Accumulate here the counters for all threads as they die. We could
 194	 * skip the group leader because it is the last user of signal_struct,
 195	 * but we want to avoid the race with thread_group_cputime() which can
 196	 * see the empty ->thread_head list.
 197	 */
 198	task_cputime(tsk, &utime, &stime);
 199	write_seqlock(&sig->stats_lock);
 200	sig->utime += utime;
 201	sig->stime += stime;
 202	sig->gtime += task_gtime(tsk);
 203	sig->min_flt += tsk->min_flt;
 204	sig->maj_flt += tsk->maj_flt;
 205	sig->nvcsw += tsk->nvcsw;
 206	sig->nivcsw += tsk->nivcsw;
 207	sig->inblock += task_io_get_inblock(tsk);
 208	sig->oublock += task_io_get_oublock(tsk);
 209	task_io_accounting_add(&sig->ioac, &tsk->ioac);
 210	sig->sum_sched_runtime += tsk->se.sum_exec_runtime;
 211	sig->nr_threads--;
 212	__unhash_process(post, tsk, group_dead);
 213	write_sequnlock(&sig->stats_lock);
 214
 215	tsk->sighand = NULL;
 216	spin_unlock(&sighand->siglock);
 217
 218	__cleanup_sighand(sighand);
 219	if (group_dead)
 220		tty_kref_put(tty);
 221}
 222
 223static void delayed_put_task_struct(struct rcu_head *rhp)
 224{
 225	struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);
 226
 227	kprobe_flush_task(tsk);
 228	rethook_flush_task(tsk);
 229	perf_event_delayed_put(tsk);
 230	trace_sched_process_free(tsk);
 231	put_task_struct(tsk);
 232}
 233
 234void put_task_struct_rcu_user(struct task_struct *task)
 235{
 236	if (refcount_dec_and_test(&task->rcu_users))
 237		call_rcu(&task->rcu, delayed_put_task_struct);
 238}
 239
 240void __weak release_thread(struct task_struct *dead_task)
 241{
 242}
 243
 244void release_task(struct task_struct *p)
 245{
 246	struct release_task_post post;
 247	struct task_struct *leader;
 248	struct pid *thread_pid;
 249	int zap_leader;
 250repeat:
 251	memset(&post, 0, sizeof(post));
 252
 253	/* don't need to get the RCU readlock here - the process is dead and
 254	 * can't be modifying its own credentials. */
 255	dec_rlimit_ucounts(task_ucounts(p), UCOUNT_RLIMIT_NPROC, 1);
 256
 257	pidfs_exit(p);
 258	cgroup_task_release(p);
 259
 260	/* Retrieve @thread_pid before __unhash_process() may set it to NULL. */
 261	thread_pid = task_pid(p);
 262
 263	write_lock_irq(&tasklist_lock);
 264	ptrace_release_task(p);
 265	__exit_signal(&post, p);
 266
 267	/*
 268	 * If we are the last non-leader member of the thread
 269	 * group, and the leader is zombie, then notify the
 270	 * group leader's parent process. (if it wants notification.)
 271	 */
 272	zap_leader = 0;
 273	leader = p->group_leader;
 274	if (leader != p && thread_group_empty(leader)
 275			&& leader->exit_state == EXIT_ZOMBIE) {
 276		/* for pidfs_exit() and do_notify_parent() */
 277		if (leader->signal->flags & SIGNAL_GROUP_EXIT)
 278			leader->exit_code = leader->signal->group_exit_code;
 279		/*
 280		 * If we were the last child thread and the leader has
 281		 * exited already, and the leader's parent ignores SIGCHLD,
 282		 * then we are the one who should release the leader.
 283		 */
 284		zap_leader = do_notify_parent(leader, leader->exit_signal);
 285		if (zap_leader)
 286			leader->exit_state = EXIT_DEAD;
 287	}
 288
 289	write_unlock_irq(&tasklist_lock);
 290	/* @thread_pid can't go away until free_pids() below */
 291	proc_flush_pid(thread_pid);
 292	exit_cred_namespaces(p);
 293	add_device_randomness(&p->se.sum_exec_runtime,
 294			      sizeof(p->se.sum_exec_runtime));
 295	free_pids(post.pids);
 296	release_thread(p);
 297	/*
 298	 * This task was already removed from the process/thread/pid lists
 299	 * and lock_task_sighand(p) can't succeed. Nobody else can touch
 300	 * ->pending or, if group dead, signal->shared_pending. We can call
 301	 * flush_sigqueue() lockless.
 302	 */
 303	flush_sigqueue(&p->pending);
 304	if (thread_group_leader(p))
 305		flush_sigqueue(&p->signal->shared_pending);
 306
 307	put_task_struct_rcu_user(p);
 308
 309	p = leader;
 310	if (unlikely(zap_leader))
 311		goto repeat;
 312}
 313
 314int rcuwait_wake_up(struct rcuwait *w)
 315{
 316	int ret = 0;
 317	struct task_struct *task;
 318
 319	rcu_read_lock();
 320
 321	/*
 322	 * Order condition vs @task, such that everything prior to the load
 323	 * of @task is visible. This is the condition as to why the user called
 324	 * rcuwait_wake() in the first place. Pairs with set_current_state()
 325	 * barrier (A) in rcuwait_wait_event().
 326	 *
 327	 *    WAIT                WAKE
 328	 *    [S] tsk = current	  [S] cond = true
 329	 *        MB (A)	      MB (B)
 330	 *    [L] cond		  [L] tsk
 331	 */
 332	smp_mb(); /* (B) */
 333
 334	task = rcu_dereference(w->task);
 335	if (task)
 336		ret = wake_up_process(task);
 337	rcu_read_unlock();
 338
 339	return ret;
 340}
 341EXPORT_SYMBOL_GPL(rcuwait_wake_up);
 342
 343/*
 344 * Determine if a process group is "orphaned", according to the POSIX
 345 * definition in 2.2.2.52.  Orphaned process groups are not to be affected
 346 * by terminal-generated stop signals.  Newly orphaned process groups are
 347 * to receive a SIGHUP and a SIGCONT.
 348 *
 349 * "I ask you, have you ever known what it is to be an orphan?"
 350 */
 351static int will_become_orphaned_pgrp(struct pid *pgrp,
 352					struct task_struct *ignored_task)
 353{
 354	struct task_struct *p;
 355
 356	do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
 357		if ((p == ignored_task) ||
 358		    (p->exit_state && thread_group_empty(p)) ||
 359		    is_global_init(p->real_parent))
 360			continue;
 361
 362		if (task_pgrp(p->real_parent) != pgrp &&
 363		    task_session(p->real_parent) == task_session(p))
 364			return 0;
 365	} while_each_pid_task(pgrp, PIDTYPE_PGID, p);
 366
 367	return 1;
 368}
 369
 370int is_current_pgrp_orphaned(void)
 371{
 372	int retval;
 373
 374	read_lock(&tasklist_lock);
 375	retval = will_become_orphaned_pgrp(task_pgrp(current), NULL);
 376	read_unlock(&tasklist_lock);
 377
 378	return retval;
 379}
 380
 381static bool has_stopped_jobs(struct pid *pgrp)
 382{
 383	struct task_struct *p;
 384
 385	do_each_pid_task(pgrp, PIDTYPE_PGID, p) {
 386		if (p->signal->flags & SIGNAL_STOP_STOPPED)
 387			return true;
 388	} while_each_pid_task(pgrp, PIDTYPE_PGID, p);
 389
 390	return false;
 391}
 392
 393/*
 394 * Check to see if any process groups have become orphaned as
 395 * a result of our exiting, and if they have any stopped jobs,
 396 * send them a SIGHUP and then a SIGCONT. (POSIX 3.2.2.2)
 397 */
 398static void
 399kill_orphaned_pgrp(struct task_struct *tsk, struct task_struct *parent)
 400{
 401	struct pid *pgrp = task_pgrp(tsk);
 402	struct task_struct *ignored_task = tsk;
 403
 404	if (!parent)
 405		/* exit: our father is in a different pgrp than
 406		 * we are and we were the only connection outside.
 407		 */
 408		parent = tsk->real_parent;
 409	else
 410		/* reparent: our child is in a different pgrp than
 411		 * we are, and it was the only connection outside.
 412		 */
 413		ignored_task = NULL;
 414
 415	if (task_pgrp(parent) != pgrp &&
 416	    task_session(parent) == task_session(tsk) &&
 417	    will_become_orphaned_pgrp(pgrp, ignored_task) &&
 418	    has_stopped_jobs(pgrp)) {
 419		__kill_pgrp_info(SIGHUP, SEND_SIG_PRIV, pgrp);
 420		__kill_pgrp_info(SIGCONT, SEND_SIG_PRIV, pgrp);
 421	}
 422}
 423
 424static void coredump_task_exit(struct task_struct *tsk,
 425			       struct core_state *core_state)
 426{
 427	struct core_thread self;
 428
 429	self.task = tsk;
 430	if (self.task->flags & PF_SIGNALED)
 431		self.next = xchg(&core_state->dumper.next, &self);
 432	else
 433		self.task = NULL;
 434	/*
 435	 * Implies mb(), the result of xchg() must be visible
 436	 * to core_state->dumper.
 437	 */
 438	if (atomic_dec_and_test(&core_state->nr_threads))
 439		complete(&core_state->startup);
 440
 441	for (;;) {
 442		set_current_state(TASK_IDLE|TASK_FREEZABLE);
 443		if (!self.task) /* see coredump_finish() */
 444			break;
 445		schedule();
 446	}
 447	__set_current_state(TASK_RUNNING);
 448}
 449
 450#ifdef CONFIG_MEMCG
 451/* drops tasklist_lock if succeeds */
 452static bool __try_to_set_owner(struct task_struct *tsk, struct mm_struct *mm)
 453{
 454	bool ret = false;
 455
 456	task_lock(tsk);
 457	if (likely(tsk->mm == mm)) {
 458		/* tsk can't pass exit_mm/exec_mmap and exit */
 459		read_unlock(&tasklist_lock);
 460		WRITE_ONCE(mm->owner, tsk);
 461		lru_gen_migrate_mm(mm);
 462		ret = true;
 463	}
 464	task_unlock(tsk);
 465	return ret;
 466}
 467
 468static bool try_to_set_owner(struct task_struct *g, struct mm_struct *mm)
 469{
 470	struct task_struct *t;
 471
 472	for_each_thread(g, t) {
 473		struct mm_struct *t_mm = READ_ONCE(t->mm);
 474		if (t_mm == mm) {
 475			if (__try_to_set_owner(t, mm))
 476				return true;
 477		} else if (t_mm)
 478			break;
 479	}
 480
 481	return false;
 482}
 483
 484/*
 485 * A task is exiting.   If it owned this mm, find a new owner for the mm.
 486 */
 487void mm_update_next_owner(struct mm_struct *mm)
 488{
 489	struct task_struct *g, *p = current;
 490
 491	/*
 492	 * If the exiting or execing task is not the owner, it's
 493	 * someone else's problem.
 494	 */
 495	if (mm->owner != p)
 496		return;
 497	/*
 498	 * The current owner is exiting/execing and there are no other
 499	 * candidates.  Do not leave the mm pointing to a possibly
 500	 * freed task structure.
 501	 */
 502	if (atomic_read(&mm->mm_users) <= 1) {
 503		WRITE_ONCE(mm->owner, NULL);
 504		return;
 505	}
 506
 507	read_lock(&tasklist_lock);
 508	/*
 509	 * Search in the children
 510	 */
 511	list_for_each_entry(g, &p->children, sibling) {
 512		if (try_to_set_owner(g, mm))
 513			goto ret;
 514	}
 515	/*
 516	 * Search in the siblings
 517	 */
 518	list_for_each_entry(g, &p->real_parent->children, sibling) {
 519		if (try_to_set_owner(g, mm))
 520			goto ret;
 521	}
 522	/*
 523	 * Search through everything else, we should not get here often.
 524	 */
 525	for_each_process(g) {
 526		if (atomic_read(&mm->mm_users) <= 1)
 527			break;
 528		if (g->flags & PF_KTHREAD)
 529			continue;
 530		if (try_to_set_owner(g, mm))
 531			goto ret;
 532	}
 533	read_unlock(&tasklist_lock);
 534	/*
 535	 * We found no owner yet mm_users > 1: this implies that we are
 536	 * most likely racing with swapoff (try_to_unuse()) or /proc or
 537	 * ptrace or page migration (get_task_mm()).  Mark owner as NULL.
 538	 */
 539	WRITE_ONCE(mm->owner, NULL);
 540 ret:
 541	return;
 542
 543}
 544#endif /* CONFIG_MEMCG */
 545
 546/*
 547 * Turn us into a lazy TLB process if we
 548 * aren't already..
 549 */
 550static void exit_mm(void)
 551{
 552	struct mm_struct *mm = current->mm;
 553
 554	exit_mm_release(current, mm);
 555	if (!mm)
 556		return;
 557	mmap_read_lock(mm);
 558	mmgrab_lazy_tlb(mm);
 559	BUG_ON(mm != current->active_mm);
 560	/* more a memory barrier than a real lock */
 561	task_lock(current);
 562	/*
 563	 * When a thread stops operating on an address space, the loop
 564	 * in membarrier_private_expedited() may not observe that
 565	 * tsk->mm, and the loop in membarrier_global_expedited() may
 566	 * not observe a MEMBARRIER_STATE_GLOBAL_EXPEDITED
 567	 * rq->membarrier_state, so those would not issue an IPI.
 568	 * Membarrier requires a memory barrier after accessing
 569	 * user-space memory, before clearing tsk->mm or the
 570	 * rq->membarrier_state.
 571	 */
 572	smp_mb__after_spinlock();
 573	local_irq_disable();
 574	current->mm = NULL;
 575	membarrier_update_current_mm(NULL);
 576	enter_lazy_tlb(mm, current);
 577	local_irq_enable();
 578	task_unlock(current);
 579	mmap_read_unlock(mm);
 580	mm_update_next_owner(mm);
 581	mmput(mm);
 582	if (test_thread_flag(TIF_MEMDIE))
 583		exit_oom_victim();
 584}
 585
 586static struct task_struct *find_alive_thread(struct task_struct *p)
 587{
 588	struct task_struct *t;
 589
 590	for_each_thread(p, t) {
 591		if (!(t->flags & PF_EXITING))
 592			return t;
 593	}
 594	return NULL;
 595}
 596
 597static struct task_struct *find_child_reaper(struct task_struct *father,
 598						struct list_head *dead)
 599	__releases(&tasklist_lock)
 600	__acquires(&tasklist_lock)
 601{
 602	struct pid_namespace *pid_ns = task_active_pid_ns(father);
 603	struct task_struct *reaper = pid_ns->child_reaper;
 604	struct task_struct *p, *n;
 605
 606	if (likely(reaper != father))
 607		return reaper;
 608
 609	reaper = find_alive_thread(father);
 610	if (reaper) {
 611		pid_ns->child_reaper = reaper;
 612		return reaper;
 613	}
 614
 615	write_unlock_irq(&tasklist_lock);
 616
 617	list_for_each_entry_safe(p, n, dead, ptrace_entry) {
 618		list_del_init(&p->ptrace_entry);
 619		release_task(p);
 620	}
 621
 622	zap_pid_ns_processes(pid_ns);
 623	write_lock_irq(&tasklist_lock);
 624
 625	return father;
 626}
 627
 628/*
 629 * When we die, we re-parent all our children, and try to:
 630 * 1. give them to another thread in our thread group, if such a member exists
 631 * 2. give it to the first ancestor process which prctl'd itself as a
 632 *    child_subreaper for its children (like a service manager)
 633 * 3. give it to the init process (PID 1) in our pid namespace
 634 */
 635static struct task_struct *find_new_reaper(struct task_struct *father,
 636					   struct task_struct *child_reaper)
 637{
 638	struct task_struct *thread, *reaper;
 639
 640	thread = find_alive_thread(father);
 641	if (thread)
 642		return thread;
 643
 644	if (father->signal->has_child_subreaper) {
 645		unsigned int ns_level = task_pid(father)->level;
 646		/*
 647		 * Find the first ->is_child_subreaper ancestor in our pid_ns.
 648		 * We can't check reaper != child_reaper to ensure we do not
 649		 * cross the namespaces, the exiting parent could be injected
 650		 * by setns() + fork().
 651		 * We check pid->level, this is slightly more efficient than
 652		 * task_active_pid_ns(reaper) != task_active_pid_ns(father).
 653		 */
 654		for (reaper = father->real_parent;
 655		     task_pid(reaper)->level == ns_level;
 656		     reaper = reaper->real_parent) {
 657			if (reaper == &init_task)
 658				break;
 659			if (!reaper->signal->is_child_subreaper)
 660				continue;
 661			thread = find_alive_thread(reaper);
 662			if (thread)
 663				return thread;
 664		}
 665	}
 666
 667	return child_reaper;
 668}
 669
 670/*
 671* Any that need to be release_task'd are put on the @dead list.
 672 */
 673static void reparent_leader(struct task_struct *father, struct task_struct *p,
 674				struct list_head *dead)
 675{
 676	if (unlikely(p->exit_state == EXIT_DEAD))
 677		return;
 678
 679	/* We don't want people slaying init. */
 680	p->exit_signal = SIGCHLD;
 681
 682	/* If it has exited notify the new parent about this child's death. */
 683	if (!p->ptrace &&
 684	    p->exit_state == EXIT_ZOMBIE && thread_group_empty(p)) {
 685		if (do_notify_parent(p, p->exit_signal)) {
 686			p->exit_state = EXIT_DEAD;
 687			list_add(&p->ptrace_entry, dead);
 688		}
 689	}
 690
 691	kill_orphaned_pgrp(p, father);
 692}
 693
 694/*
 695 * Make init inherit all the child processes
 696 */
 697static void forget_original_parent(struct task_struct *father,
 698					struct list_head *dead)
 699{
 700	struct task_struct *p, *t, *reaper;
 701
 702	if (unlikely(!list_empty(&father->ptraced)))
 703		exit_ptrace(father, dead);
 704
 705	/* Can drop and reacquire tasklist_lock */
 706	reaper = find_child_reaper(father, dead);
 707	if (list_empty(&father->children))
 708		return;
 709
 710	reaper = find_new_reaper(father, reaper);
 711	list_for_each_entry(p, &father->children, sibling) {
 712		for_each_thread(p, t) {
 713			RCU_INIT_POINTER(t->real_parent, reaper);
 714			BUG_ON((!t->ptrace) != (rcu_access_pointer(t->parent) == father));
 715			if (likely(!t->ptrace))
 716				t->parent = t->real_parent;
 717			if (t->pdeath_signal)
 718				group_send_sig_info(t->pdeath_signal,
 719						    SEND_SIG_NOINFO, t,
 720						    PIDTYPE_TGID);
 721		}
 722		/*
 723		 * If this is a threaded reparent there is no need to
 724		 * notify anyone anything has happened.
 725		 */
 726		if (!same_thread_group(reaper, father))
 727			reparent_leader(father, p, dead);
 728	}
 729	list_splice_tail_init(&father->children, &reaper->children);
 730}
 731
 732/*
 733 * Send signals to all our closest relatives so that they know
 734 * to properly mourn us..
 735 */
 736static void exit_notify(struct task_struct *tsk, int group_dead)
 737{
 738	bool autoreap;
 739	struct task_struct *p, *n;
 740	LIST_HEAD(dead);
 741
 742	write_lock_irq(&tasklist_lock);
 743	forget_original_parent(tsk, &dead);
 744
 745	if (group_dead)
 746		kill_orphaned_pgrp(tsk->group_leader, NULL);
 747
 748	tsk->exit_state = EXIT_ZOMBIE;
 749
 750	if (unlikely(tsk->ptrace)) {
 751		int sig = thread_group_leader(tsk) &&
 752				thread_group_empty(tsk) &&
 753				!ptrace_reparented(tsk) ?
 754			tsk->exit_signal : SIGCHLD;
 755		autoreap = do_notify_parent(tsk, sig);
 756	} else if (thread_group_leader(tsk)) {
 757		autoreap = thread_group_empty(tsk) &&
 758			do_notify_parent(tsk, tsk->exit_signal);
 759	} else {
 760		autoreap = true;
 761		/* untraced sub-thread */
 762		do_notify_pidfd(tsk);
 763	}
 764
 765	if (autoreap) {
 766		tsk->exit_state = EXIT_DEAD;
 767		list_add(&tsk->ptrace_entry, &dead);
 768	}
 769
 770	/* mt-exec, de_thread() is waiting for group leader */
 771	if (unlikely(tsk->signal->notify_count < 0))
 772		wake_up_process(tsk->signal->group_exec_task);
 773	write_unlock_irq(&tasklist_lock);
 774
 775	list_for_each_entry_safe(p, n, &dead, ptrace_entry) {
 776		list_del_init(&p->ptrace_entry);
 777		release_task(p);
 778	}
 779}
 780
 781#ifdef CONFIG_DEBUG_STACK_USAGE
 782#ifdef CONFIG_STACK_GROWSUP
 783unsigned long stack_not_used(struct task_struct *p)
 784{
 785	unsigned long *n = end_of_stack(p);
 786
 787	do {	/* Skip over canary */
 788		n--;
 789	} while (!*n);
 790
 791	return (unsigned long)end_of_stack(p) - (unsigned long)n;
 792}
 793#else /* !CONFIG_STACK_GROWSUP */
 794unsigned long stack_not_used(struct task_struct *p)
 795{
 796	unsigned long *n = end_of_stack(p);
 797
 798	do {	/* Skip over canary */
 799		n++;
 800	} while (!*n);
 801
 802	return (unsigned long)n - (unsigned long)end_of_stack(p);
 803}
 804#endif /* CONFIG_STACK_GROWSUP */
 805
 806/* Count the maximum pages reached in kernel stacks */
 807static inline void kstack_histogram(unsigned long used_stack)
 808{
 809#ifdef CONFIG_VM_EVENT_COUNTERS
 810	if (used_stack <= 1024)
 811		count_vm_event(KSTACK_1K);
 812#if THREAD_SIZE > 1024
 813	else if (used_stack <= 2048)
 814		count_vm_event(KSTACK_2K);
 815#endif
 816#if THREAD_SIZE > 2048
 817	else if (used_stack <= 4096)
 818		count_vm_event(KSTACK_4K);
 819#endif
 820#if THREAD_SIZE > 4096
 821	else if (used_stack <= 8192)
 822		count_vm_event(KSTACK_8K);
 823#endif
 824#if THREAD_SIZE > 8192
 825	else if (used_stack <= 16384)
 826		count_vm_event(KSTACK_16K);
 827#endif
 828#if THREAD_SIZE > 16384
 829	else if (used_stack <= 32768)
 830		count_vm_event(KSTACK_32K);
 831#endif
 832#if THREAD_SIZE > 32768
 833	else if (used_stack <= 65536)
 834		count_vm_event(KSTACK_64K);
 835#endif
 836#if THREAD_SIZE > 65536
 837	else
 838		count_vm_event(KSTACK_REST);
 839#endif
 840#endif /* CONFIG_VM_EVENT_COUNTERS */
 841}
 842
 843static void check_stack_usage(void)
 844{
 845	static DEFINE_SPINLOCK(low_water_lock);
 846	static int lowest_to_date = THREAD_SIZE;
 847	unsigned long free;
 848
 849	free = stack_not_used(current);
 850	kstack_histogram(THREAD_SIZE - free);
 851
 852	if (free >= lowest_to_date)
 853		return;
 854
 855	spin_lock(&low_water_lock);
 856	if (free < lowest_to_date) {
 857		pr_info("%s (%d) used greatest stack depth: %lu bytes left\n",
 858			current->comm, task_pid_nr(current), free);
 859		lowest_to_date = free;
 860	}
 861	spin_unlock(&low_water_lock);
 862}
 863#else /* !CONFIG_DEBUG_STACK_USAGE */
 864static inline void check_stack_usage(void) {}
 865#endif /* CONFIG_DEBUG_STACK_USAGE */
 866
 867static void synchronize_group_exit(struct task_struct *tsk, long code)
 868{
 869	struct sighand_struct *sighand = tsk->sighand;
 870	struct signal_struct *signal = tsk->signal;
 871	struct core_state *core_state;
 872
 873	spin_lock_irq(&sighand->siglock);
 874	signal->quick_threads--;
 875	if ((signal->quick_threads == 0) &&
 876	    !(signal->flags & SIGNAL_GROUP_EXIT)) {
 877		signal->flags = SIGNAL_GROUP_EXIT;
 878		signal->group_exit_code = code;
 879		signal->group_stop_count = 0;
 880	}
 881	/*
 882	 * Serialize with any possible pending coredump.
 883	 * We must hold siglock around checking core_state
 884	 * and setting PF_POSTCOREDUMP.  The core-inducing thread
 885	 * will increment ->nr_threads for each thread in the
 886	 * group without PF_POSTCOREDUMP set.
 887	 */
 888	tsk->flags |= PF_POSTCOREDUMP;
 889	core_state = signal->core_state;
 890	spin_unlock_irq(&sighand->siglock);
 891
 892	if (unlikely(core_state))
 893		coredump_task_exit(tsk, core_state);
 894}
 895
 896void __noreturn do_exit(long code)
 897{
 898	struct task_struct *tsk = current;
 899	struct kthread *kthread;
 900	int group_dead;
 901
 902	WARN_ON(irqs_disabled());
 903	WARN_ON(tsk->plug);
 904
 905	kthread = tsk_is_kthread(tsk);
 906	if (unlikely(kthread))
 907		kthread_do_exit(kthread, code);
 908
 909	kcov_task_exit(tsk);
 910	kmsan_task_exit(tsk);
 911
 912	synchronize_group_exit(tsk, code);
 913	ptrace_event(PTRACE_EVENT_EXIT, code);
 914	user_events_exit(tsk);
 915
 916	io_uring_files_cancel();
 917	sched_mm_cid_exit(tsk);
 918	exit_signals(tsk);  /* sets PF_EXITING */
 919
 920	seccomp_filter_release(tsk);
 921
 922	acct_update_integrals(tsk);
 923	group_dead = atomic_dec_and_test(&tsk->signal->live);
 924	if (group_dead) {
 925		/*
 926		 * If the last thread of global init has exited, panic
 927		 * immediately to get a useable coredump.
 928		 */
 929		if (unlikely(is_global_init(tsk)))
 930			panic("Attempted to kill init! exitcode=0x%08x\n",
 931				tsk->signal->group_exit_code ?: (int)code);
 932
 933#ifdef CONFIG_POSIX_TIMERS
 934		hrtimer_cancel(&tsk->signal->real_timer);
 935		exit_itimers(tsk);
 936#endif
 937		if (tsk->mm)
 938			setmax_mm_hiwater_rss(&tsk->signal->maxrss, tsk->mm);
 939	}
 940	acct_collect(code, group_dead);
 941	if (group_dead)
 942		tty_audit_exit();
 943	audit_free(tsk);
 944
 945	tsk->exit_code = code;
 946	taskstats_exit(tsk, group_dead);
 947	trace_sched_process_exit(tsk, group_dead);
 948
 949	/*
 950	 * Since sampling can touch ->mm, make sure to stop everything before we
 951	 * tear it down.
 952	 *
 953	 * Also flushes inherited counters to the parent - before the parent
 954	 * gets woken up by child-exit notifications.
 955	 */
 956	perf_event_exit_task(tsk);
 957	/*
 958	 * PF_EXITING (above) ensures unwind_deferred_request() will no
 959	 * longer add new unwinds. While exit_mm() (below) will destroy the
 960	 * abaility to do unwinds. So flush any pending unwinds here.
 961	 */
 962	unwind_deferred_task_exit(tsk);
 963
 964	exit_mm();
 965
 966	if (group_dead)
 967		acct_process();
 968
 969	exit_sem(tsk);
 970	exit_shm(tsk);
 971	exit_files(tsk);
 972	exit_fs(tsk);
 973	if (group_dead)
 974		disassociate_ctty(1);
 975	exit_nsproxy_namespaces(tsk);
 976	exit_task_work(tsk);
 977	exit_thread(tsk);
 978
 979	sched_autogroup_exit_task(tsk);
 980	cgroup_task_exit(tsk);
 981
 982	/*
 983	 * FIXME: do that only when needed, using sched_exit tracepoint
 984	 */
 985	flush_ptrace_hw_breakpoint(tsk);
 986
 987	exit_tasks_rcu_start();
 988	exit_notify(tsk, group_dead);
 989	proc_exit_connector(tsk);
 990	mpol_put_task_policy(tsk);
 991#ifdef CONFIG_FUTEX
 992	if (unlikely(current->pi_state_cache))
 993		kfree(current->pi_state_cache);
 994#endif
 995	/*
 996	 * Make sure we are holding no locks:
 997	 */
 998	debug_check_no_locks_held();
 999
1000	if (tsk->io_context)
1001		exit_io_context(tsk);
1002
1003	if (tsk->splice_pipe)
1004		free_pipe_info(tsk->splice_pipe);
1005
1006	if (tsk->task_frag.page)
1007		put_page(tsk->task_frag.page);
1008
1009	exit_task_stack_account(tsk);
1010
1011	check_stack_usage();
1012	preempt_disable();
1013	if (tsk->nr_dirtied)
1014		__this_cpu_add(dirty_throttle_leaks, tsk->nr_dirtied);
1015	exit_rcu();
1016	exit_tasks_rcu_finish();
1017
1018	lockdep_free_task(tsk);
1019	do_task_dead();
1020}
1021EXPORT_SYMBOL(do_exit);
1022
1023void __noreturn make_task_dead(int signr)
1024{
1025	/*
1026	 * Take the task off the cpu after something catastrophic has
1027	 * happened.
1028	 *
1029	 * We can get here from a kernel oops, sometimes with preemption off.
1030	 * Start by checking for critical errors.
1031	 * Then fix up important state like USER_DS and preemption.
1032	 * Then do everything else.
1033	 */
1034	struct task_struct *tsk = current;
1035	unsigned int limit;
1036
1037	if (unlikely(in_interrupt()))
1038		panic("Aiee, killing interrupt handler!");
1039	if (unlikely(!tsk->pid))
1040		panic("Attempted to kill the idle task!");
1041
1042	if (unlikely(irqs_disabled())) {
1043		pr_info("note: %s[%d] exited with irqs disabled\n",
1044			current->comm, task_pid_nr(current));
1045		local_irq_enable();
1046	}
1047	if (unlikely(in_atomic())) {
1048		pr_info("note: %s[%d] exited with preempt_count %d\n",
1049			current->comm, task_pid_nr(current),
1050			preempt_count());
1051		preempt_count_set(PREEMPT_ENABLED);
1052	}
1053
1054	/*
1055	 * Every time the system oopses, if the oops happens while a reference
1056	 * to an object was held, the reference leaks.
1057	 * If the oops doesn't also leak memory, repeated oopsing can cause
1058	 * reference counters to wrap around (if they're not using refcount_t).
1059	 * This means that repeated oopsing can make unexploitable-looking bugs
1060	 * exploitable through repeated oopsing.
1061	 * To make sure this can't happen, place an upper bound on how often the
1062	 * kernel may oops without panic().
1063	 */
1064	limit = READ_ONCE(oops_limit);
1065	if (atomic_inc_return(&oops_count) >= limit && limit)
1066		panic("Oopsed too often (kernel.oops_limit is %d)", limit);
1067
1068	/*
1069	 * We're taking recursive faults here in make_task_dead. Safest is to just
1070	 * leave this task alone and wait for reboot.
1071	 */
1072	if (unlikely(tsk->flags & PF_EXITING)) {
1073		pr_alert("Fixing recursive fault but reboot is needed!\n");
1074		futex_exit_recursive(tsk);
1075		tsk->exit_state = EXIT_DEAD;
1076		refcount_inc(&tsk->rcu_users);
1077		do_task_dead();
1078	}
1079
1080	do_exit(signr);
1081}
1082
1083SYSCALL_DEFINE1(exit, int, error_code)
1084{
1085	do_exit((error_code&0xff)<<8);
1086}
1087
1088/*
1089 * Take down every thread in the group.  This is called by fatal signals
1090 * as well as by sys_exit_group (below).
1091 */
1092void __noreturn
1093do_group_exit(int exit_code)
1094{
1095	struct signal_struct *sig = current->signal;
1096
1097	if (sig->flags & SIGNAL_GROUP_EXIT)
1098		exit_code = sig->group_exit_code;
1099	else if (sig->group_exec_task)
1100		exit_code = 0;
1101	else {
1102		struct sighand_struct *const sighand = current->sighand;
1103
1104		spin_lock_irq(&sighand->siglock);
1105		if (sig->flags & SIGNAL_GROUP_EXIT)
1106			/* Another thread got here before we took the lock.  */
1107			exit_code = sig->group_exit_code;
1108		else if (sig->group_exec_task)
1109			exit_code = 0;
1110		else {
1111			sig->group_exit_code = exit_code;
1112			sig->flags = SIGNAL_GROUP_EXIT;
1113			zap_other_threads(current);
1114		}
1115		spin_unlock_irq(&sighand->siglock);
1116	}
1117
1118	do_exit(exit_code);
1119	/* NOTREACHED */
1120}
1121
1122/*
1123 * this kills every thread in the thread group. Note that any externally
1124 * wait4()-ing process will get the correct exit code - even if this
1125 * thread is not the thread group leader.
1126 */
1127SYSCALL_DEFINE1(exit_group, int, error_code)
1128{
1129	do_group_exit((error_code & 0xff) << 8);
1130	/* NOTREACHED */
1131	return 0;
1132}
1133
1134static int eligible_pid(struct wait_opts *wo, struct task_struct *p)
1135{
1136	return	wo->wo_type == PIDTYPE_MAX ||
1137		task_pid_type(p, wo->wo_type) == wo->wo_pid;
1138}
1139
1140static int
1141eligible_child(struct wait_opts *wo, bool ptrace, struct task_struct *p)
1142{
1143	if (!eligible_pid(wo, p))
1144		return 0;
1145
1146	/*
1147	 * Wait for all children (clone and not) if __WALL is set or
1148	 * if it is traced by us.
1149	 */
1150	if (ptrace || (wo->wo_flags & __WALL))
1151		return 1;
1152
1153	/*
1154	 * Otherwise, wait for clone children *only* if __WCLONE is set;
1155	 * otherwise, wait for non-clone children *only*.
1156	 *
1157	 * Note: a "clone" child here is one that reports to its parent
1158	 * using a signal other than SIGCHLD, or a non-leader thread which
1159	 * we can only see if it is traced by us.
1160	 */
1161	if ((p->exit_signal != SIGCHLD) ^ !!(wo->wo_flags & __WCLONE))
1162		return 0;
1163
1164	return 1;
1165}
1166
1167/*
1168 * Handle sys_wait4 work for one task in state EXIT_ZOMBIE.  We hold
1169 * read_lock(&tasklist_lock) on entry.  If we return zero, we still hold
1170 * the lock and this task is uninteresting.  If we return nonzero, we have
1171 * released the lock and the system call should return.
1172 */
1173static int wait_task_zombie(struct wait_opts *wo, struct task_struct *p)
1174{
1175	int state, status;
1176	pid_t pid = task_pid_vnr(p);
1177	uid_t uid = from_kuid_munged(current_user_ns(), task_uid(p));
1178	struct waitid_info *infop;
1179
1180	if (!likely(wo->wo_flags & WEXITED))
1181		return 0;
1182
1183	if (unlikely(wo->wo_flags & WNOWAIT)) {
1184		status = (p->signal->flags & SIGNAL_GROUP_EXIT)
1185			? p->signal->group_exit_code : p->exit_code;
1186		get_task_struct(p);
1187		read_unlock(&tasklist_lock);
1188		sched_annotate_sleep();
1189		if (wo->wo_rusage)
1190			getrusage(p, RUSAGE_BOTH, wo->wo_rusage);
1191		put_task_struct(p);
1192		goto out_info;
1193	}
1194	/*
1195	 * Move the task's state to DEAD/TRACE, only one thread can do this.
1196	 */
1197	state = (ptrace_reparented(p) && thread_group_leader(p)) ?
1198		EXIT_TRACE : EXIT_DEAD;
1199	if (cmpxchg(&p->exit_state, EXIT_ZOMBIE, state) != EXIT_ZOMBIE)
1200		return 0;
1201	/*
1202	 * We own this thread, nobody else can reap it.
1203	 */
1204	read_unlock(&tasklist_lock);
1205	sched_annotate_sleep();
1206
1207	/*
1208	 * Check thread_group_leader() to exclude the traced sub-threads.
1209	 */
1210	if (state == EXIT_DEAD && thread_group_leader(p)) {
1211		struct signal_struct *sig = p->signal;
1212		struct signal_struct *psig = current->signal;
1213		unsigned long maxrss;
1214		u64 tgutime, tgstime;
1215
1216		/*
1217		 * The resource counters for the group leader are in its
1218		 * own task_struct.  Those for dead threads in the group
1219		 * are in its signal_struct, as are those for the child
1220		 * processes it has previously reaped.  All these
1221		 * accumulate in the parent's signal_struct c* fields.
1222		 *
1223		 * We don't bother to take a lock here to protect these
1224		 * p->signal fields because the whole thread group is dead
1225		 * and nobody can change them.
1226		 *
1227		 * psig->stats_lock also protects us from our sub-threads
1228		 * which can reap other children at the same time.
1229		 *
1230		 * We use thread_group_cputime_adjusted() to get times for
1231		 * the thread group, which consolidates times for all threads
1232		 * in the group including the group leader.
1233		 */
1234		thread_group_cputime_adjusted(p, &tgutime, &tgstime);
1235		write_seqlock_irq(&psig->stats_lock);
1236		psig->cutime += tgutime + sig->cutime;
1237		psig->cstime += tgstime + sig->cstime;
1238		psig->cgtime += task_gtime(p) + sig->gtime + sig->cgtime;
1239		psig->cmin_flt +=
1240			p->min_flt + sig->min_flt + sig->cmin_flt;
1241		psig->cmaj_flt +=
1242			p->maj_flt + sig->maj_flt + sig->cmaj_flt;
1243		psig->cnvcsw +=
1244			p->nvcsw + sig->nvcsw + sig->cnvcsw;
1245		psig->cnivcsw +=
1246			p->nivcsw + sig->nivcsw + sig->cnivcsw;
1247		psig->cinblock +=
1248			task_io_get_inblock(p) +
1249			sig->inblock + sig->cinblock;
1250		psig->coublock +=
1251			task_io_get_oublock(p) +
1252			sig->oublock + sig->coublock;
1253		maxrss = max(sig->maxrss, sig->cmaxrss);
1254		if (psig->cmaxrss < maxrss)
1255			psig->cmaxrss = maxrss;
1256		task_io_accounting_add(&psig->ioac, &p->ioac);
1257		task_io_accounting_add(&psig->ioac, &sig->ioac);
1258		write_sequnlock_irq(&psig->stats_lock);
1259	}
1260
1261	if (wo->wo_rusage)
1262		getrusage(p, RUSAGE_BOTH, wo->wo_rusage);
1263	status = (p->signal->flags & SIGNAL_GROUP_EXIT)
1264		? p->signal->group_exit_code : p->exit_code;
1265	wo->wo_stat = status;
1266
1267	if (state == EXIT_TRACE) {
1268		write_lock_irq(&tasklist_lock);
1269		/* We dropped tasklist, ptracer could die and untrace */
1270		ptrace_unlink(p);
1271
1272		/* If parent wants a zombie, don't release it now */
1273		state = EXIT_ZOMBIE;
1274		if (do_notify_parent(p, p->exit_signal))
1275			state = EXIT_DEAD;
1276		p->exit_state = state;
1277		write_unlock_irq(&tasklist_lock);
1278	}
1279	if (state == EXIT_DEAD)
1280		release_task(p);
1281
1282out_info:
1283	infop = wo->wo_info;
1284	if (infop) {
1285		if ((status & 0x7f) == 0) {
1286			infop->cause = CLD_EXITED;
1287			infop->status = status >> 8;
1288		} else {
1289			infop->cause = (status & 0x80) ? CLD_DUMPED : CLD_KILLED;
1290			infop->status = status & 0x7f;
1291		}
1292		infop->pid = pid;
1293		infop->uid = uid;
1294	}
1295
1296	return pid;
1297}
1298
1299static int *task_stopped_code(struct task_struct *p, bool ptrace)
1300{
1301	if (ptrace) {
1302		if (task_is_traced(p) && !(p->jobctl & JOBCTL_LISTENING))
1303			return &p->exit_code;
1304	} else {
1305		if (p->signal->flags & SIGNAL_STOP_STOPPED)
1306			return &p->signal->group_exit_code;
1307	}
1308	return NULL;
1309}
1310
1311/**
1312 * wait_task_stopped - Wait for %TASK_STOPPED or %TASK_TRACED
1313 * @wo: wait options
1314 * @ptrace: is the wait for ptrace
1315 * @p: task to wait for
1316 *
1317 * Handle sys_wait4() work for %p in state %TASK_STOPPED or %TASK_TRACED.
1318 *
1319 * CONTEXT:
1320 * read_lock(&tasklist_lock), which is released if return value is
1321 * non-zero.  Also, grabs and releases @p->sighand->siglock.
1322 *
1323 * RETURNS:
1324 * 0 if wait condition didn't exist and search for other wait conditions
1325 * should continue.  Non-zero return, -errno on failure and @p's pid on
1326 * success, implies that tasklist_lock is released and wait condition
1327 * search should terminate.
1328 */
1329static int wait_task_stopped(struct wait_opts *wo,
1330				int ptrace, struct task_struct *p)
1331{
1332	struct waitid_info *infop;
1333	int exit_code, *p_code, why;
1334	uid_t uid = 0; /* unneeded, required by compiler */
1335	pid_t pid;
1336
1337	/*
1338	 * Traditionally we see ptrace'd stopped tasks regardless of options.
1339	 */
1340	if (!ptrace && !(wo->wo_flags & WUNTRACED))
1341		return 0;
1342
1343	if (!task_stopped_code(p, ptrace))
1344		return 0;
1345
1346	exit_code = 0;
1347	spin_lock_irq(&p->sighand->siglock);
1348
1349	p_code = task_stopped_code(p, ptrace);
1350	if (unlikely(!p_code))
1351		goto unlock_sig;
1352
1353	exit_code = *p_code;
1354	if (!exit_code)
1355		goto unlock_sig;
1356
1357	if (!unlikely(wo->wo_flags & WNOWAIT))
1358		*p_code = 0;
1359
1360	uid = from_kuid_munged(current_user_ns(), task_uid(p));
1361unlock_sig:
1362	spin_unlock_irq(&p->sighand->siglock);
1363	if (!exit_code)
1364		return 0;
1365
1366	/*
1367	 * Now we are pretty sure this task is interesting.
1368	 * Make sure it doesn't get reaped out from under us while we
1369	 * give up the lock and then examine it below.  We don't want to
1370	 * keep holding onto the tasklist_lock while we call getrusage and
1371	 * possibly take page faults for user memory.
1372	 */
1373	get_task_struct(p);
1374	pid = task_pid_vnr(p);
1375	why = ptrace ? CLD_TRAPPED : CLD_STOPPED;
1376	read_unlock(&tasklist_lock);
1377	sched_annotate_sleep();
1378	if (wo->wo_rusage)
1379		getrusage(p, RUSAGE_BOTH, wo->wo_rusage);
1380	put_task_struct(p);
1381
1382	if (likely(!(wo->wo_flags & WNOWAIT)))
1383		wo->wo_stat = (exit_code << 8) | 0x7f;
1384
1385	infop = wo->wo_info;
1386	if (infop) {
1387		infop->cause = why;
1388		infop->status = exit_code;
1389		infop->pid = pid;
1390		infop->uid = uid;
1391	}
1392	return pid;
1393}
1394
1395/*
1396 * Handle do_wait work for one task in a live, non-stopped state.
1397 * read_lock(&tasklist_lock) on entry.  If we return zero, we still hold
1398 * the lock and this task is uninteresting.  If we return nonzero, we have
1399 * released the lock and the system call should return.
1400 */
1401static int wait_task_continued(struct wait_opts *wo, struct task_struct *p)
1402{
1403	struct waitid_info *infop;
1404	pid_t pid;
1405	uid_t uid;
1406
1407	if (!unlikely(wo->wo_flags & WCONTINUED))
1408		return 0;
1409
1410	if (!(p->signal->flags & SIGNAL_STOP_CONTINUED))
1411		return 0;
1412
1413	spin_lock_irq(&p->sighand->siglock);
1414	/* Re-check with the lock held.  */
1415	if (!(p->signal->flags & SIGNAL_STOP_CONTINUED)) {
1416		spin_unlock_irq(&p->sighand->siglock);
1417		return 0;
1418	}
1419	if (!unlikely(wo->wo_flags & WNOWAIT))
1420		p->signal->flags &= ~SIGNAL_STOP_CONTINUED;
1421	uid = from_kuid_munged(current_user_ns(), task_uid(p));
1422	spin_unlock_irq(&p->sighand->siglock);
1423
1424	pid = task_pid_vnr(p);
1425	get_task_struct(p);
1426	read_unlock(&tasklist_lock);
1427	sched_annotate_sleep();
1428	if (wo->wo_rusage)
1429		getrusage(p, RUSAGE_BOTH, wo->wo_rusage);
1430	put_task_struct(p);
1431
1432	infop = wo->wo_info;
1433	if (!infop) {
1434		wo->wo_stat = 0xffff;
1435	} else {
1436		infop->cause = CLD_CONTINUED;
1437		infop->pid = pid;
1438		infop->uid = uid;
1439		infop->status = SIGCONT;
1440	}
1441	return pid;
1442}
1443
1444/*
1445 * Consider @p for a wait by @parent.
1446 *
1447 * -ECHILD should be in ->notask_error before the first call.
1448 * Returns nonzero for a final return, when we have unlocked tasklist_lock.
1449 * Returns zero if the search for a child should continue;
1450 * then ->notask_error is 0 if @p is an eligible child,
1451 * or still -ECHILD.
1452 */
1453static int wait_consider_task(struct wait_opts *wo, int ptrace,
1454				struct task_struct *p)
1455{
1456	/*
1457	 * We can race with wait_task_zombie() from another thread.
1458	 * Ensure that EXIT_ZOMBIE -> EXIT_DEAD/EXIT_TRACE transition
1459	 * can't confuse the checks below.
1460	 */
1461	int exit_state = READ_ONCE(p->exit_state);
1462	int ret;
1463
1464	if (unlikely(exit_state == EXIT_DEAD))
1465		return 0;
1466
1467	ret = eligible_child(wo, ptrace, p);
1468	if (!ret)
1469		return ret;
1470
1471	if (unlikely(exit_state == EXIT_TRACE)) {
1472		/*
1473		 * ptrace == 0 means we are the natural parent. In this case
1474		 * we should clear notask_error, debugger will notify us.
1475		 */
1476		if (likely(!ptrace))
1477			wo->notask_error = 0;
1478		return 0;
1479	}
1480
1481	if (likely(!ptrace) && unlikely(p->ptrace)) {
1482		/*
1483		 * If it is traced by its real parent's group, just pretend
1484		 * the caller is ptrace_do_wait() and reap this child if it
1485		 * is zombie.
1486		 *
1487		 * This also hides group stop state from real parent; otherwise
1488		 * a single stop can be reported twice as group and ptrace stop.
1489		 * If a ptracer wants to distinguish these two events for its
1490		 * own children it should create a separate process which takes
1491		 * the role of real parent.
1492		 */
1493		if (!ptrace_reparented(p))
1494			ptrace = 1;
1495	}
1496
1497	/* slay zombie? */
1498	if (exit_state == EXIT_ZOMBIE) {
1499		/* we don't reap group leaders with subthreads */
1500		if (!delay_group_leader(p)) {
1501			/*
1502			 * A zombie ptracee is only visible to its ptracer.
1503			 * Notification and reaping will be cascaded to the
1504			 * real parent when the ptracer detaches.
1505			 */
1506			if (unlikely(ptrace) || likely(!p->ptrace))
1507				return wait_task_zombie(wo, p);
1508		}
1509
1510		/*
1511		 * Allow access to stopped/continued state via zombie by
1512		 * falling through.  Clearing of notask_error is complex.
1513		 *
1514		 * When !@ptrace:
1515		 *
1516		 * If WEXITED is set, notask_error should naturally be
1517		 * cleared.  If not, subset of WSTOPPED|WCONTINUED is set,
1518		 * so, if there are live subthreads, there are events to
1519		 * wait for.  If all subthreads are dead, it's still safe
1520		 * to clear - this function will be called again in finite
1521		 * amount time once all the subthreads are released and
1522		 * will then return without clearing.
1523		 *
1524		 * When @ptrace:
1525		 *
1526		 * Stopped state is per-task and thus can't change once the
1527		 * target task dies.  Only continued and exited can happen.
1528		 * Clear notask_error if WCONTINUED | WEXITED.
1529		 */
1530		if (likely(!ptrace) || (wo->wo_flags & (WCONTINUED | WEXITED)))
1531			wo->notask_error = 0;
1532	} else {
1533		/*
1534		 * @p is alive and it's gonna stop, continue or exit, so
1535		 * there always is something to wait for.
1536		 */
1537		wo->notask_error = 0;
1538	}
1539
1540	/*
1541	 * Wait for stopped.  Depending on @ptrace, different stopped state
1542	 * is used and the two don't interact with each other.
1543	 */
1544	ret = wait_task_stopped(wo, ptrace, p);
1545	if (ret)
1546		return ret;
1547
1548	/*
1549	 * Wait for continued.  There's only one continued state and the
1550	 * ptracer can consume it which can confuse the real parent.  Don't
1551	 * use WCONTINUED from ptracer.  You don't need or want it.
1552	 */
1553	return wait_task_continued(wo, p);
1554}
1555
1556/*
1557 * Do the work of do_wait() for one thread in the group, @tsk.
1558 *
1559 * -ECHILD should be in ->notask_error before the first call.
1560 * Returns nonzero for a final return, when we have unlocked tasklist_lock.
1561 * Returns zero if the search for a child should continue; then
1562 * ->notask_error is 0 if there were any eligible children,
1563 * or still -ECHILD.
1564 */
1565static int do_wait_thread(struct wait_opts *wo, struct task_struct *tsk)
1566{
1567	struct task_struct *p;
1568
1569	list_for_each_entry(p, &tsk->children, sibling) {
1570		int ret = wait_consider_task(wo, 0, p);
1571
1572		if (ret)
1573			return ret;
1574	}
1575
1576	return 0;
1577}
1578
1579static int ptrace_do_wait(struct wait_opts *wo, struct task_struct *tsk)
1580{
1581	struct task_struct *p;
1582
1583	list_for_each_entry(p, &tsk->ptraced, ptrace_entry) {
1584		int ret = wait_consider_task(wo, 1, p);
1585
1586		if (ret)
1587			return ret;
1588	}
1589
1590	return 0;
1591}
1592
1593bool pid_child_should_wake(struct wait_opts *wo, struct task_struct *p)
1594{
1595	if (!eligible_pid(wo, p))
1596		return false;
1597
1598	if ((wo->wo_flags & __WNOTHREAD) && wo->child_wait.private != p->parent)
1599		return false;
1600
1601	return true;
1602}
1603
1604static int child_wait_callback(wait_queue_entry_t *wait, unsigned mode,
1605				int sync, void *key)
1606{
1607	struct wait_opts *wo = container_of(wait, struct wait_opts,
1608						child_wait);
1609	struct task_struct *p = key;
1610
1611	if (pid_child_should_wake(wo, p))
1612		return default_wake_function(wait, mode, sync, key);
1613
1614	return 0;
1615}
1616
1617void __wake_up_parent(struct task_struct *p, struct task_struct *parent)
1618{
1619	__wake_up_sync_key(&parent->signal->wait_chldexit,
1620			   TASK_INTERRUPTIBLE, p);
1621}
1622
1623static bool is_effectively_child(struct wait_opts *wo, bool ptrace,
1624				 struct task_struct *target)
1625{
1626	struct task_struct *parent =
1627		!ptrace ? target->real_parent : target->parent;
1628
1629	return current == parent || (!(wo->wo_flags & __WNOTHREAD) &&
1630				     same_thread_group(current, parent));
1631}
1632
1633/*
1634 * Optimization for waiting on PIDTYPE_PID. No need to iterate through child
1635 * and tracee lists to find the target task.
1636 */
1637static int do_wait_pid(struct wait_opts *wo)
1638{
1639	bool ptrace;
1640	struct task_struct *target;
1641	int retval;
1642
1643	ptrace = false;
1644	target = pid_task(wo->wo_pid, PIDTYPE_TGID);
1645	if (target && is_effectively_child(wo, ptrace, target)) {
1646		retval = wait_consider_task(wo, ptrace, target);
1647		if (retval)
1648			return retval;
1649	}
1650
1651	ptrace = true;
1652	target = pid_task(wo->wo_pid, PIDTYPE_PID);
1653	if (target && target->ptrace &&
1654	    is_effectively_child(wo, ptrace, target)) {
1655		retval = wait_consider_task(wo, ptrace, target);
1656		if (retval)
1657			return retval;
1658	}
1659
1660	return 0;
1661}
1662
1663long __do_wait(struct wait_opts *wo)
1664{
1665	long retval;
1666
1667	/*
1668	 * If there is nothing that can match our criteria, just get out.
1669	 * We will clear ->notask_error to zero if we see any child that
1670	 * might later match our criteria, even if we are not able to reap
1671	 * it yet.
1672	 */
1673	wo->notask_error = -ECHILD;
1674	if ((wo->wo_type < PIDTYPE_MAX) &&
1675	   (!wo->wo_pid || !pid_has_task(wo->wo_pid, wo->wo_type)))
1676		goto notask;
1677
1678	read_lock(&tasklist_lock);
1679
1680	if (wo->wo_type == PIDTYPE_PID) {
1681		retval = do_wait_pid(wo);
1682		if (retval)
1683			return retval;
1684	} else {
1685		struct task_struct *tsk = current;
1686
1687		do {
1688			retval = do_wait_thread(wo, tsk);
1689			if (retval)
1690				return retval;
1691
1692			retval = ptrace_do_wait(wo, tsk);
1693			if (retval)
1694				return retval;
1695
1696			if (wo->wo_flags & __WNOTHREAD)
1697				break;
1698		} while_each_thread(current, tsk);
1699	}
1700	read_unlock(&tasklist_lock);
1701
1702notask:
1703	retval = wo->notask_error;
1704	if (!retval && !(wo->wo_flags & WNOHANG))
1705		return -ERESTARTSYS;
1706
1707	return retval;
1708}
1709
1710static long do_wait(struct wait_opts *wo)
1711{
1712	int retval;
1713
1714	trace_sched_process_wait(wo->wo_pid);
1715
1716	init_waitqueue_func_entry(&wo->child_wait, child_wait_callback);
1717	wo->child_wait.private = current;
1718	add_wait_queue(&current->signal->wait_chldexit, &wo->child_wait);
1719
1720	do {
1721		set_current_state(TASK_INTERRUPTIBLE);
1722		retval = __do_wait(wo);
1723		if (retval != -ERESTARTSYS)
1724			break;
1725		if (signal_pending(current))
1726			break;
1727		schedule();
1728	} while (1);
1729
1730	__set_current_state(TASK_RUNNING);
1731	remove_wait_queue(&current->signal->wait_chldexit, &wo->child_wait);
1732	return retval;
1733}
1734
1735int kernel_waitid_prepare(struct wait_opts *wo, int which, pid_t upid,
1736			  struct waitid_info *infop, int options,
1737			  struct rusage *ru)
1738{
1739	unsigned int f_flags = 0;
1740	struct pid *pid = NULL;
1741	enum pid_type type;
1742
1743	if (options & ~(WNOHANG|WNOWAIT|WEXITED|WSTOPPED|WCONTINUED|
1744			__WNOTHREAD|__WCLONE|__WALL))
1745		return -EINVAL;
1746	if (!(options & (WEXITED|WSTOPPED|WCONTINUED)))
1747		return -EINVAL;
1748
1749	switch (which) {
1750	case P_ALL:
1751		type = PIDTYPE_MAX;
1752		break;
1753	case P_PID:
1754		type = PIDTYPE_PID;
1755		if (upid <= 0)
1756			return -EINVAL;
1757
1758		pid = find_get_pid(upid);
1759		break;
1760	case P_PGID:
1761		type = PIDTYPE_PGID;
1762		if (upid < 0)
1763			return -EINVAL;
1764
1765		if (upid)
1766			pid = find_get_pid(upid);
1767		else
1768			pid = get_task_pid(current, PIDTYPE_PGID);
1769		break;
1770	case P_PIDFD:
1771		type = PIDTYPE_PID;
1772		if (upid < 0)
1773			return -EINVAL;
1774
1775		pid = pidfd_get_pid(upid, &f_flags);
1776		if (IS_ERR(pid))
1777			return PTR_ERR(pid);
1778
1779		break;
1780	default:
1781		return -EINVAL;
1782	}
1783
1784	wo->wo_type	= type;
1785	wo->wo_pid	= pid;
1786	wo->wo_flags	= options;
1787	wo->wo_info	= infop;
1788	wo->wo_rusage	= ru;
1789	if (f_flags & O_NONBLOCK)
1790		wo->wo_flags |= WNOHANG;
1791
1792	return 0;
1793}
1794
1795static long kernel_waitid(int which, pid_t upid, struct waitid_info *infop,
1796			  int options, struct rusage *ru)
1797{
1798	struct wait_opts wo;
1799	long ret;
1800
1801	ret = kernel_waitid_prepare(&wo, which, upid, infop, options, ru);
1802	if (ret)
1803		return ret;
1804
1805	ret = do_wait(&wo);
1806	if (!ret && !(options & WNOHANG) && (wo.wo_flags & WNOHANG))
1807		ret = -EAGAIN;
1808
1809	put_pid(wo.wo_pid);
1810	return ret;
1811}
1812
1813SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
1814		infop, int, options, struct rusage __user *, ru)
1815{
1816	struct rusage r;
1817	struct waitid_info info = {.status = 0};
1818	long err = kernel_waitid(which, upid, &info, options, ru ? &r : NULL);
1819	int signo = 0;
1820
1821	if (err > 0) {
1822		signo = SIGCHLD;
1823		err = 0;
1824		if (ru && copy_to_user(ru, &r, sizeof(struct rusage)))
1825			return -EFAULT;
1826	}
1827	if (!infop)
1828		return err;
1829
1830	if (!user_write_access_begin(infop, sizeof(*infop)))
1831		return -EFAULT;
1832
1833	unsafe_put_user(signo, &infop->si_signo, Efault);
1834	unsafe_put_user(0, &infop->si_errno, Efault);
1835	unsafe_put_user(info.cause, &infop->si_code, Efault);
1836	unsafe_put_user(info.pid, &infop->si_pid, Efault);
1837	unsafe_put_user(info.uid, &infop->si_uid, Efault);
1838	unsafe_put_user(info.status, &infop->si_status, Efault);
1839	user_write_access_end();
1840	return err;
1841Efault:
1842	user_write_access_end();
1843	return -EFAULT;
1844}
1845
1846long kernel_wait4(pid_t upid, int __user *stat_addr, int options,
1847		  struct rusage *ru)
1848{
1849	struct wait_opts wo;
1850	struct pid *pid = NULL;
1851	enum pid_type type;
1852	long ret;
1853
1854	if (options & ~(WNOHANG|WUNTRACED|WCONTINUED|
1855			__WNOTHREAD|__WCLONE|__WALL))
1856		return -EINVAL;
1857
1858	/* -INT_MIN is not defined */
1859	if (upid == INT_MIN)
1860		return -ESRCH;
1861
1862	if (upid == -1)
1863		type = PIDTYPE_MAX;
1864	else if (upid < 0) {
1865		type = PIDTYPE_PGID;
1866		pid = find_get_pid(-upid);
1867	} else if (upid == 0) {
1868		type = PIDTYPE_PGID;
1869		pid = get_task_pid(current, PIDTYPE_PGID);
1870	} else /* upid > 0 */ {
1871		type = PIDTYPE_PID;
1872		pid = find_get_pid(upid);
1873	}
1874
1875	wo.wo_type	= type;
1876	wo.wo_pid	= pid;
1877	wo.wo_flags	= options | WEXITED;
1878	wo.wo_info	= NULL;
1879	wo.wo_stat	= 0;
1880	wo.wo_rusage	= ru;
1881	ret = do_wait(&wo);
1882	put_pid(pid);
1883	if (ret > 0 && stat_addr && put_user(wo.wo_stat, stat_addr))
1884		ret = -EFAULT;
1885
1886	return ret;
1887}
1888
1889int kernel_wait(pid_t pid, int *stat)
1890{
1891	struct wait_opts wo = {
1892		.wo_type	= PIDTYPE_PID,
1893		.wo_pid		= find_get_pid(pid),
1894		.wo_flags	= WEXITED,
1895	};
1896	int ret;
1897
1898	ret = do_wait(&wo);
1899	if (ret > 0 && wo.wo_stat)
1900		*stat = wo.wo_stat;
1901	put_pid(wo.wo_pid);
1902	return ret;
1903}
1904
1905SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr,
1906		int, options, struct rusage __user *, ru)
1907{
1908	struct rusage r;
1909	long err = kernel_wait4(upid, stat_addr, options, ru ? &r : NULL);
1910
1911	if (err > 0) {
1912		if (ru && copy_to_user(ru, &r, sizeof(struct rusage)))
1913			return -EFAULT;
1914	}
1915	return err;
1916}
1917
1918#ifdef __ARCH_WANT_SYS_WAITPID
1919
1920/*
1921 * sys_waitpid() remains for compatibility. waitpid() should be
1922 * implemented by calling sys_wait4() from libc.a.
1923 */
1924SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options)
1925{
1926	return kernel_wait4(pid, stat_addr, options, NULL);
1927}
1928
1929#endif
1930
1931#ifdef CONFIG_COMPAT
1932COMPAT_SYSCALL_DEFINE4(wait4,
1933	compat_pid_t, pid,
1934	compat_uint_t __user *, stat_addr,
1935	int, options,
1936	struct compat_rusage __user *, ru)
1937{
1938	struct rusage r;
1939	long err = kernel_wait4(pid, stat_addr, options, ru ? &r : NULL);
1940	if (err > 0) {
1941		if (ru && put_compat_rusage(&r, ru))
1942			return -EFAULT;
1943	}
1944	return err;
1945}
1946
1947COMPAT_SYSCALL_DEFINE5(waitid,
1948		int, which, compat_pid_t, pid,
1949		struct compat_siginfo __user *, infop, int, options,
1950		struct compat_rusage __user *, uru)
1951{
1952	struct rusage ru;
1953	struct waitid_info info = {.status = 0};
1954	long err = kernel_waitid(which, pid, &info, options, uru ? &ru : NULL);
1955	int signo = 0;
1956	if (err > 0) {
1957		signo = SIGCHLD;
1958		err = 0;
1959		if (uru) {
1960			/* kernel_waitid() overwrites everything in ru */
1961			if (COMPAT_USE_64BIT_TIME)
1962				err = copy_to_user(uru, &ru, sizeof(ru));
1963			else
1964				err = put_compat_rusage(&ru, uru);
1965			if (err)
1966				return -EFAULT;
1967		}
1968	}
1969
1970	if (!infop)
1971		return err;
1972
1973	if (!user_write_access_begin(infop, sizeof(*infop)))
1974		return -EFAULT;
1975
1976	unsafe_put_user(signo, &infop->si_signo, Efault);
1977	unsafe_put_user(0, &infop->si_errno, Efault);
1978	unsafe_put_user(info.cause, &infop->si_code, Efault);
1979	unsafe_put_user(info.pid, &infop->si_pid, Efault);
1980	unsafe_put_user(info.uid, &infop->si_uid, Efault);
1981	unsafe_put_user(info.status, &infop->si_status, Efault);
1982	user_write_access_end();
1983	return err;
1984Efault:
1985	user_write_access_end();
1986	return -EFAULT;
1987}
1988#endif
1989
1990/*
1991 * This needs to be __function_aligned as GCC implicitly makes any
1992 * implementation of abort() cold and drops alignment specified by
1993 * -falign-functions=N.
1994 *
1995 * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88345#c11
1996 */
1997__weak __function_aligned void abort(void)
1998{
1999	BUG();
2000
2001	/* if that doesn't kill us, halt */
2002	panic("Oops failed to kill thread");
2003}
2004EXPORT_SYMBOL(abort);
~/ Read-only file preview.