Commit e73b1d72 authored by Cheng-Yang Chou's avatar Cheng-Yang Chou Committed by Tejun Heo
Browse files

sched_ext: Fix build errors and unused label warning in non-cgroup configs



When building with SCHED_CLASS_EXT=y but CGROUPS=n, clang reports errors
for undeclared cgroup_put() and cgroup_get() calls, and a warning for the
unused err_stop_helper label.

EXT_SUB_SCHED is def_bool y depending only on SCHED_CLASS_EXT, but it
fundamentally requires cgroups (cgroup_path, cgroup_get, cgroup_put,
cgroup_id, etc.). Add the missing CGROUPS dependency to EXT_SUB_SCHED in
init/Kconfig.

Guard cgroup_put() and cgroup_get() in the common paths with:
  #if defined(CONFIG_EXT_GROUP_SCHED) || defined(CONFIG_EXT_SUB_SCHED)

Guard the err_stop_helper label with #ifdef CONFIG_EXT_SUB_SCHED since
all gotos targeting it are inside that same ifdef block.

Tested with both CGROUPS enabled and disabled.

Fixes: ebeca1f9 ("sched_ext: Introduce cgroup sub-sched support")
Reported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202603210903.IrKhPd6k-lkp@intel.com/


Signed-off-by: default avatarCheng-Yang Chou <yphbchou0911@gmail.com>
Acked-by: default avatarAndrea Righi <arighi@nvidia.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 068014da
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1178,7 +1178,7 @@ endif #CGROUP_SCHED

config EXT_SUB_SCHED
        def_bool y
        depends on SCHED_CLASS_EXT
        depends on SCHED_CLASS_EXT && CGROUPS

config SCHED_MM_CID
	def_bool y
+6 −0
Original line number Diff line number Diff line
@@ -6494,8 +6494,10 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops,
#endif	/* CONFIG_EXT_SUB_SCHED */
	return sch;

#ifdef CONFIG_EXT_SUB_SCHED
err_stop_helper:
	kthread_destroy_worker(sch->helper);
#endif
err_free_pcpu:
	for_each_possible_cpu(cpu) {
		if (cpu == bypass_fail_cpu)
@@ -6514,7 +6516,9 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops,
err_free_sch:
	kfree(sch);
err_put_cgrp:
#if defined(CONFIG_EXT_GROUP_SCHED) || defined(CONFIG_EXT_SUB_SCHED)
	cgroup_put(cgrp);
#endif
	return ERR_PTR(ret);
}

@@ -6603,7 +6607,9 @@ static void scx_root_enable_workfn(struct kthread_work *work)
	if (ret)
		goto err_unlock;

#if defined(CONFIG_EXT_GROUP_SCHED) || defined(CONFIG_EXT_SUB_SCHED)
	cgroup_get(cgrp);
#endif
	sch = scx_alloc_and_add_sched(ops, cgrp, NULL);
	if (IS_ERR(sch)) {
		ret = PTR_ERR(sch);