The patch titled Subject: kill task_struct->thread_group has been added to the -mm mm-nonmm-unstable branch. Its filename is kill-task_struct-thread_group.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/kill-task_struct-thread_group.patch This patch will later appear in the mm-nonmm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Oleg Nesterov <oleg@xxxxxxxxxx> Subject: kill task_struct->thread_group Date: Sat, 26 Aug 2023 13:14:09 +0200 The last user was removed by the previous patch. Link: https://lkml.kernel.org/r/20230826111409.GA23243@xxxxxxxxxx Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> Cc: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/sched.h | 1 - init/init_task.c | 1 - kernel/exit.c | 1 - kernel/fork.c | 3 --- 4 files changed, 6 deletions(-) --- a/include/linux/sched.h~kill-task_struct-thread_group +++ a/include/linux/sched.h @@ -997,7 +997,6 @@ struct task_struct { /* PID/PID hash table linkage. */ struct pid *thread_pid; struct hlist_node pid_links[PIDTYPE_MAX]; - struct list_head thread_group; struct list_head thread_node; struct completion *vfork_done; --- a/init/init_task.c~kill-task_struct-thread_group +++ a/init/init_task.c @@ -132,7 +132,6 @@ struct task_struct init_task .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(init_task.pi_lock), .timer_slack_ns = 50000, /* 50 usec default slack */ .thread_pid = &init_struct_pid, - .thread_group = LIST_HEAD_INIT(init_task.thread_group), .thread_node = LIST_HEAD_INIT(init_signals.thread_head), #ifdef CONFIG_AUDIT .loginuid = INVALID_UID, --- a/kernel/exit.c~kill-task_struct-thread_group +++ a/kernel/exit.c @@ -133,7 +133,6 @@ static void __unhash_process(struct task list_del_init(&p->sibling); __this_cpu_dec(process_counts); } - list_del_rcu(&p->thread_group); list_del_rcu(&p->thread_node); } --- a/kernel/fork.c~kill-task_struct-thread_group +++ a/kernel/fork.c @@ -2575,7 +2575,6 @@ __latent_entropy struct task_struct *cop p->dirty_paused_when = 0; p->pdeath_signal = 0; - INIT_LIST_HEAD(&p->thread_group); p->task_works = NULL; clear_posix_cputimers_work(p); @@ -2703,8 +2702,6 @@ __latent_entropy struct task_struct *cop atomic_inc(¤t->signal->live); refcount_inc(¤t->signal->sigcnt); task_join_group_stop(p); - list_add_tail_rcu(&p->thread_group, - &p->group_leader->thread_group); list_add_tail_rcu(&p->thread_node, &p->signal->thread_head); } _ Patches currently in -mm which might be from oleg@xxxxxxxxxx are change-thread_group_empty-to-use-task_struct-thread_node.patch kill-task_struct-thread_group.patch