Tejun Heo (tj@xxxxxxxxxx) wrote: > 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@xxxxxxxxxx> Reviewed-by: Mandeep Singh Baines <msb@xxxxxxxxxxxx> > Reported-by: Jiri Kosina <jkosina@xxxxxxx> > LKML-Reference: <alpine.LNX.2.00.1203282354440.25526@xxxxxxxxxxxxx> > --- > Jiri, can you please confirm the fix? > > Thanks. > > kernel/cgroup.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/cgroup.c b/kernel/cgroup.c > index f4ea4b6..ed64cca 100644 > --- a/kernel/cgroup.c > +++ b/kernel/cgroup.c > @@ -1883,7 +1883,7 @@ static void cgroup_task_migrate(struct cgroup *cgrp, struct cgroup *oldcgrp, > */ > int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk) > { > - int retval; > + int retval = 0; > struct cgroup_subsys *ss, *failed_ss = NULL; > struct cgroup *oldcgrp; > struct cgroupfs_root *root = cgrp->root; -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html