cgroup: Fix css_task_iter_advance_css_set() cset skip condition [Linux 4.19.66]

This Linux kernel change "cgroup: Fix css_task_iter_advance_css_set() cset skip condition" is included in the Linux 4.19.66 release. This change is authored by Tejun Heo <tj [at] kernel.org> on Mon Jun 10 09:08:27 2019 -0700. The commit for this change in Linux stable tree is ebda41d (patch) which is from upstream commit c596687. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream c596687.

cgroup: Fix css_task_iter_advance_css_set() cset skip condition

commit c596687a008b579c503afb7a64fcacc7270fae9e upstream.

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
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 kernel/cgroup/cgroup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index ddde75b..78ef274 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -4154,7 +4154,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;

Leave a Reply

Your email address will not be published. Required fields are marked *