Commit b07ef7741122a83575499c11417e514877941e76
Committed by
Tejun Heo
1 parent
026085ef5a
Exists in
master
and in
6 other branches
cgroup: remove redundant get/put of task struct
threadgroup_lock() guarantees that the target threadgroup will remain stable - no new task will be added, no new PF_EXITING will be set and exec won't happen. Changes in V2: * https://lkml.org/lkml/2011/12/20/369 (Tejun Heo) * Undo incorrect removal of get/put from attach_task_by_pid() * Author * Remove a comment which is made stale by this change Signed-off-by: Mandeep Singh Baines <msb@chromium.org> Acked-by: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: Tejun Heo <tj@kernel.org> Cc: containers@lists.linux-foundation.org Cc: cgroups@vger.kernel.org Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Paul Menage <paul@paulmenage.org>
Showing 1 changed file with 2 additions and 9 deletions Side-by-side Diff
kernel/cgroup.c
... | ... | @@ -2116,7 +2116,7 @@ |
2116 | 2116 | retval = -EAGAIN; |
2117 | 2117 | goto out_free_group_list; |
2118 | 2118 | } |
2119 | - /* take a reference on each task in the group to go in the array. */ | |
2119 | + | |
2120 | 2120 | tsk = leader; |
2121 | 2121 | i = nr_migrating_tasks = 0; |
2122 | 2122 | do { |
... | ... | @@ -2128,7 +2128,6 @@ |
2128 | 2128 | |
2129 | 2129 | /* as per above, nr_threads may decrease, but not increase. */ |
2130 | 2130 | BUG_ON(i >= group_size); |
2131 | - get_task_struct(tsk); | |
2132 | 2131 | /* |
2133 | 2132 | * saying GFP_ATOMIC has no effect here because we did prealloc |
2134 | 2133 | * earlier, but it's good form to communicate our expectations. |
... | ... | @@ -2150,7 +2149,7 @@ |
2150 | 2149 | /* methods shouldn't be called if no task is actually migrating */ |
2151 | 2150 | retval = 0; |
2152 | 2151 | if (!nr_migrating_tasks) |
2153 | - goto out_put_tasks; | |
2152 | + goto out_free_group_list; | |
2154 | 2153 | |
2155 | 2154 | /* |
2156 | 2155 | * step 1: check that we can legitimately attach to the cgroup. |
... | ... | @@ -2233,12 +2232,6 @@ |
2233 | 2232 | if (ss->cancel_attach) |
2234 | 2233 | ss->cancel_attach(ss, cgrp, &tset); |
2235 | 2234 | } |
2236 | - } | |
2237 | -out_put_tasks: | |
2238 | - /* clean up the array of referenced threads in the group. */ | |
2239 | - for (i = 0; i < group_size; i++) { | |
2240 | - tc = flex_array_get(group, i); | |
2241 | - put_task_struct(tc->task); | |
2242 | 2235 | } |
2243 | 2236 | out_free_group_list: |
2244 | 2237 | flex_array_free(group); |