1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-12 09:32:12 +00:00
Tejun Heo 260fbcb92b cgroup: Move dying_tasks cleanup from cgroup_task_release() to cgroup_task_free()
Currently, cgroup_task_exit() adds thread group leaders with live member
threads to their css_set's dying_tasks list (so cgroup.procs iteration can
still see the leader), and cgroup_task_release() later removes them with
list_del_init(&task->cg_list).

An upcoming patch will defer the dying_tasks list addition, moving it from
cgroup_task_exit() (called from do_exit()) to a new function called from
finish_task_switch(). However, release_task() (which calls
cgroup_task_release()) can run either before or after finish_task_switch(),
creating a race where cgroup_task_release() might try to remove the task from
dying_tasks before or while it's being added.

Move the list_del_init() from cgroup_task_release() to cgroup_task_free() to
fix this race. cgroup_task_free() runs from __put_task_struct(), which is
always after both paths, making the cleanup safe.

Cc: Dan Schatzberg <dschatzberg@meta.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
2025-11-03 11:46:18 -10:00
..
2025-10-03 17:41:12 -07:00
2025-10-07 08:40:15 -07:00
2025-10-04 11:13:11 -07:00
2025-10-07 08:40:15 -07:00
2025-10-02 15:17:01 -07:00
2025-10-11 16:06:04 -07:00
2025-08-30 10:15:28 -04:00
2025-09-30 08:22:16 -07:00
2025-10-02 18:44:54 -07:00
2025-09-25 09:23:54 +02:00
2025-09-29 11:20:29 -07:00
2025-09-29 11:20:29 -07:00
2025-09-29 11:20:29 -07:00
2025-10-02 18:44:54 -07:00
2025-09-25 09:23:54 +02:00
2025-09-29 11:20:29 -07:00
2025-03-24 09:52:37 -07:00