Skip to content
  • Tejun Heo's avatar
    cgroup: fix too early usage of static_branch_disable() · a3e72739
    Tejun Heo authored
    49d1dc4b
    
     ("cgroup: implement static_key based
    cgroup_subsys_enabled() and cgroup_subsys_on_dfl()") converted cgroup
    enabled test to use static_key; however, cgroup_disable() is called
    before static_key subsystem itself is initialized and thus leads to
    the following warning when "cgroup_disable=" parameter is specified.
    
     WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:99 static_key_slow_dec+0x44/0x60()
     static_key_slow_dec used before call to jump_label_init
     ...
     Call Trace:
      [<ffffffff813b18c2>] dump_stack+0x44/0x62
      [<ffffffff8108dd52>] warn_slowpath_common+0x82/0xc0
      [<ffffffff8108ddec>] warn_slowpath_fmt+0x5c/0x80
      [<ffffffff8119c054>] static_key_slow_dec+0x44/0x60
      [<ffffffff81d826b6>] cgroup_disable+0xaf/0xd6
      [<ffffffff81d5f9de>] unknown_bootoption+0x8c/0x194
      [<ffffffff810b0c03>] parse_args+0x273/0x4a0
      [<ffffffff81d5fd67>] start_kernel+0x205/0x4b8
     ...
    
    Fix it by making cgroup_disable() to record the subsystems to disable
    in cgroup_disable_mask and moving the actual application to
    cgroup_init() which is late enough and where the enabled state is
    first used.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reported-by: default avatarAndrey Wagin <avagin@gmail.com>
    Link: http://lkml.kernel.org/g/CANaxB-yFuS4SA2znSvcKrO9L_CbHciHYW+o9bN8sZJ8eR9FxYA@mail.gmail.com
    Fixes: 49d1dc4b
    a3e72739