Files
android_kernel_xiaomi_sm8450/kernel
Hugh Dickins bb78a92f47 cgroup: fix rmdir EBUSY regression in 3.11
On 3.11-rc we are seeing cgroup directories left behind when they should
have been removed.  Here's a trivial reproducer:

cd /sys/fs/cgroup/memory
mkdir parent parent/child; rmdir parent/child parent
rmdir: failed to remove `parent': Device or resource busy

It's because cgroup_destroy_locked() (step 1 of destruction) leaves
cgroup on parent's children list, letting cgroup_offline_fn() (step 2 of
destruction) remove it; but step 2 is run by work queue, which may not
yet have removed the children when parent destruction checks the list.

Fix that by checking through a non-empty list of children: if every one
of them has already been marked CGRP_DEAD, then it's safe to proceed:
those children are invisible to userspace, and should not obstruct rmdir.

(I didn't see any reason to keep the cgrp->children checks under the
unrelated css_set_lock, so moved them out.)

tj: Flattened nested ifs a bit and updated comment so that it's
    correct on both for-3.11-fixes and for-3.12.

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2013-08-29 11:05:07 -04:00
..
2013-04-22 07:09:06 -07:00
2012-05-31 17:49:27 -07:00
2012-03-28 18:30:03 +01:00
2013-04-15 13:25:16 +02:00
2013-08-13 17:57:48 -07:00
2013-06-25 23:11:19 +02:00
2012-12-20 17:40:19 -08:00
2012-05-29 23:28:41 -04:00
2013-07-02 15:38:19 +09:30
2013-07-03 16:08:05 -07:00
2013-05-05 00:16:35 -04:00