diff options
| author | Tejun Heo <tj@kernel.org> | 2026-09-14 12:46:22 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-09-14 12:46:22 -1000 |
| commit | 02f890299bd9a8de7d4a83aecb4a882ea98fc70e (patch) | |
| tree | 582f2f6a1d81ba5acc92d4ea8f4db2e231af21b6 | |
| parent | e8f69fe59a104b4a97a3365dbb43c72996c2acde (diff) | |
| parent | 057dac23d329d5c5ed62352f2659a39fd46c6d4a (diff) | |
| download | linux-next-02f890299bd9a8de7d4a83aecb4a882ea98fc70e.tar.gz linux-next-02f890299bd9a8de7d4a83aecb4a882ea98fc70e.zip | |
Merge branch 'for-7.3-fixes' into for-next
| -rw-r--r-- | kernel/cgroup/cgroup.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 16c0362330ac..804318ae160e 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -5321,10 +5321,13 @@ struct task_struct *css_task_iter_next(struct css_task_iter *it) if (it->flags & CSS_TASK_ITER_SKIPPED) css_task_iter_advance(it); - if (it->task_pos) { + while (it->task_pos && !it->cur_task) { it->cur_task = list_entry(it->task_pos, struct task_struct, cg_list); - get_task_struct(it->cur_task); + /* a task on dying_tasks with zero refcount is only valid for + * RCU readers, not even interesting for + * CSS_TASK_ITER_WITH_DEAD, find another one */ + it->cur_task = tryget_task_struct(it->cur_task); css_task_iter_advance(it); } |
