cgroup: cgroup_attach_task() could return -errno after success
authorTejun Heo <tj@kernel.org>
Fri, 30 Mar 2012 05:03:33 +0000 (22:03 -0700)
committerTejun Heo <tj@kernel.org>
Fri, 30 Mar 2012 05:03:33 +0000 (22:03 -0700)
commit8f121918f2e49f852de1acdc5255cc1ef440d85b
tree552dbbc407189e45b6941cf117b39681dc1f7e40
parentad50c15919e8aca7ea30f9dcf4bac52448c9ab46
cgroup: cgroup_attach_task() could return -errno after success

61d1d219c4 "cgroup: remove extra calls to find_existing_css_set" made
cgroup_task_migrate() return void.  An unfortunate side effect was
that cgroup_attach_task() was depending on that function's return
value to clear its @retval on the success path.  On cgroup mounts
without any subsystem with ->can_attach() callback,
cgroup_attach_task() ended up returning @retval without initializing
it on success.

For some reason, gcc failed to warn about it and it didn't cause
cgroup_attach_task() to return non-zero value in many cases, probably
due to difference in register allocation.  When the problem
materializes, systemd fails to populate /systemd cgroup mount and
fails to boot.

Fix it by initializing @retval to zero on declaration.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Jiri Kosina <jkosina@suse.cz>
LKML-Reference: <alpine.LNX.2.00.1203282354440.25526@pobox.suse.cz>
Reviewed-by: Mandeep Singh Baines <msb@chromium.org>
Acked-by: Li Zefan <lizefan@huawei.com>
kernel/cgroup.c