• T
    cgroup: cgroup_attach_task() could return -errno after success · 8f121918
    Tejun Heo 提交于
    61d1d219 "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: NTejun Heo <tj@kernel.org>
    Reported-by: NJiri Kosina <jkosina@suse.cz>
    LKML-Reference: <alpine.LNX.2.00.1203282354440.25526@pobox.suse.cz>
    Reviewed-by: NMandeep Singh Baines <msb@chromium.org>
    Acked-by: NLi Zefan <lizefan@huawei.com>
    8f121918
cgroup.c 137.8 KB