cgroup: Fix css_task_iter_advance_css_set() cset skip condition
authorTejun Heo <tj@kernel.org>
Mon, 10 Jun 2019 16:08:27 +0000 (09:08 -0700)
committerTejun Heo <tj@kernel.org>
Mon, 10 Jun 2019 16:08:27 +0000 (09:08 -0700)
While adding handling for dying task group leaders c03cd7738a83
("cgroup: Include dying leaders with live threads in PROCS
iterations") added an inverted cset skip condition to
css_task_iter_advance_css_set().  It should skip cset if it's
completely empty but was incorrectly testing for the inverse condition
for the dying_tasks list.  Fix it.

Signed-off-by: Tejun Heo <tj@kernel.org>
Fixes: c03cd7738a83 ("cgroup: Include dying leaders with live threads in PROCS iterations")
Reported-by: syzbot+d4bba5ccd4f9a2a68681@syzkaller.appspotmail.com
kernel/cgroup/cgroup.c

index 9538a12d42d666b29347fb619603cbd9a2643a55..6420ff87d72c608fcb6ad196deb9b42d4917d448 100644 (file)
@@ -4401,7 +4401,7 @@ static void css_task_iter_advance_css_set(struct css_task_iter *it)
                        it->task_pos = NULL;
                        return;
                }
-       } while (!css_set_populated(cset) && !list_empty(&cset->dying_tasks));
+       } while (!css_set_populated(cset) && list_empty(&cset->dying_tasks));
 
        if (!list_empty(&cset->tasks))
                it->task_pos = cset->tasks.next;