[PATCH 5/5] cgroup: separate out cgroup_attach_proc error handling code
From: Mandeep Singh Baines <hidden>
Date: 2011-12-20 23:15:54
Also in:
lkml
Subsystem:
the rest · Maintainer:
Linus Torvalds
Makes it easier to read the non-error path. While at it, move the retval=0 assignment inside the !group_size check. This way the comment describe this check is directly above it(we also avoid an extra assignment not needed in the normal path). Also return 0 directly instead of using retval. Signed-off-by: Mandeep Singh Baines <redacted> Cc: Tejun Heo <redacted> Cc: Li Zefan <redacted> Cc: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: KAMEZAWA Hiroyuki <redacted> Cc: Frederic Weisbecker <redacted> Cc: Oleg Nesterov <redacted> Cc: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> Cc: Paul Menage <redacted> --- kernel/cgroup.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 2ac9eee..9ce0872 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c@@ -2067,9 +2067,10 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader) read_unlock(&tasklist_lock); /* methods shouldn't be called if no task is actually migrating */ - retval = 0; - if (!group_size) + if (!group_size) { + retval = 0; goto out_free_group_list; + } /* * step 1: check that we can legitimately attach to the cgroup.
@@ -2126,20 +2127,20 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader) */ synchronize_rcu(); cgroup_wakeup_rmdir_waiter(cgrp); - retval = 0; + flex_array_free(group); + return 0; + out_list_teardown: for (i = 0; i < css_set_refs; i++) { tc = flex_array_get(group, i); put_css_set(tc->cg); } out_cancel_attach: - if (retval) { - for_each_subsys(root, ss) { - if (ss == failed_ss) - break; - if (ss->cancel_attach) - ss->cancel_attach(ss, cgrp, &tset); - } + for_each_subsys(root, ss) { + if (ss == failed_ss) + break; + if (ss->cancel_attach) + ss->cancel_attach(ss, cgrp, &tset); } out_free_group_list: flex_array_free(group);
--
1.7.3.1