cgroup_free_root(root);
 }
 
+static inline struct cgroup *__cset_cgroup_from_root(struct css_set *cset,
+                                           struct cgroup_root *root)
+{
+       struct cgroup *res_cgroup = NULL;
+
+       if (cset == &init_css_set) {
+               res_cgroup = &root->cgrp;
+       } else if (root == &cgrp_dfl_root) {
+               res_cgroup = cset->dfl_cgrp;
+       } else {
+               struct cgrp_cset_link *link;
+
+               list_for_each_entry(link, &cset->cgrp_links, cgrp_link) {
+                       struct cgroup *c = link->cgrp;
+
+                       if (c->root == root) {
+                               res_cgroup = c;
+                               break;
+                       }
+               }
+       }
+
+       return res_cgroup;
+}
+
 /*
  * look up cgroup associated with current task's cgroup namespace on the
  * specified hierarchy
        rcu_read_lock();
 
        cset = current->nsproxy->cgroup_ns->root_cset;
-       if (cset == &init_css_set) {
-               res = &root->cgrp;
-       } else if (root == &cgrp_dfl_root) {
-               res = cset->dfl_cgrp;
-       } else {
-               struct cgrp_cset_link *link;
-
-               list_for_each_entry(link, &cset->cgrp_links, cgrp_link) {
-                       struct cgroup *c = link->cgrp;
+       res = __cset_cgroup_from_root(cset, root);
 
-                       if (c->root == root) {
-                               res = c;
-                               break;
-                       }
-               }
-       }
        rcu_read_unlock();
 
        BUG_ON(!res);
        lockdep_assert_held(&cgroup_mutex);
        lockdep_assert_held(&css_set_lock);
 
-       if (cset == &init_css_set) {
-               res = &root->cgrp;
-       } else if (root == &cgrp_dfl_root) {
-               res = cset->dfl_cgrp;
-       } else {
-               struct cgrp_cset_link *link;
-
-               list_for_each_entry(link, &cset->cgrp_links, cgrp_link) {
-                       struct cgroup *c = link->cgrp;
-
-                       if (c->root == root) {
-                               res = c;
-                               break;
-                       }
-               }
-       }
+       res = __cset_cgroup_from_root(cset, root);
 
        BUG_ON(!res);
        return res;