]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
sched_ext: Build fix on !CONFIG_STACKTRACE[_SUPPORT]
authorTejun Heo <tj@kernel.org>
Wed, 31 Jul 2024 18:56:31 +0000 (08:56 -1000)
committerTejun Heo <tj@kernel.org>
Thu, 1 Aug 2024 17:08:01 +0000 (07:08 -1000)
scx_dump_task() uses stack_trace_save_tsk() which is only available when
CONFIG_STACKTRACE. Make CONFIG_SCHED_CLASS_EXT select CONFIG_STACKTRACE if
the support is available and skip capturing stack trace if
!CONFIG_STACKTRACE.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407161844.reewQQrR-lkp@intel.com/
Acked-by: David Vernet <void@manifault.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/Kconfig.preempt
kernel/sched/ext.c

index f3d140c3acc195d7652e6322510f3aef96075a26..fe782cd77388592b0c1b4197ae0d1e20b837b553 100644 (file)
@@ -136,6 +136,7 @@ config SCHED_CORE
 config SCHED_CLASS_EXT
        bool "Extensible Scheduling Class"
        depends on BPF_SYSCALL && BPF_JIT && DEBUG_INFO_BTF
+       select STACKTRACE if STACKTRACE_SUPPORT
        help
          This option enables a new scheduler class sched_ext (SCX), which
          allows scheduling policies to be implemented as BPF programs to
index 4a07deb30c44609537c59efd1bedcef62d387cac..6f7c7d8b56de340186a481c25ed4d5621c6ff84b 100644 (file)
@@ -4330,7 +4330,7 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx,
        static unsigned long bt[SCX_EXIT_BT_LEN];
        char dsq_id_buf[19] = "(n/a)";
        unsigned long ops_state = atomic_long_read(&p->scx.ops_state);
-       unsigned int bt_len;
+       unsigned int bt_len = 0;
 
        if (p->scx.dsq)
                scnprintf(dsq_id_buf, sizeof(dsq_id_buf), "0x%llx",
@@ -4355,7 +4355,9 @@ static void scx_dump_task(struct seq_buf *s, struct scx_dump_ctx *dctx,
                ops_dump_exit();
        }
 
+#ifdef CONFIG_STACKTRACE
        bt_len = stack_trace_save_tsk(p, bt, SCX_EXIT_BT_LEN, 1);
+#endif
        if (bt_len) {
                dump_newline(s);
                dump_stack_trace(s, "    ", bt, bt_len);