X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kernel%2Fcgroup.c;h=aa95591c14304e13fece8b9b54e397b1c7e23f04;hb=ab3f5faa6255a0eb4f832675507d9e295ca7e9ba;hp=e2f46ba37f7243c4278de77a8c8536ddc4c0aad5;hpb=6e677ef6fbe9513051bd753ae670b586e8ea7df1;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git diff --git a/kernel/cgroup.c b/kernel/cgroup.c index e2f46ba..aa95591 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -4845,12 +4845,16 @@ static int __init cgroup_wq_init(void) /* * There isn't much point in executing destruction path in * parallel. Good chunk is serialized with cgroup_mutex anyway. - * Use 1 for @max_active. + * + * XXX: Must be ordered to make sure parent is offlined after + * children. The ordering requirement is for memcg where a + * parent's offline may wait for a child's leading to deadlock. In + * the long term, this should be fixed from memcg side. * * We would prefer to do this in cgroup_init() above, but that * is called before init_workqueues(): so leave this until after. */ - cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); + cgroup_destroy_wq = alloc_ordered_workqueue("cgroup_destroy", 0); BUG_ON(!cgroup_destroy_wq); /*