From: Tejun Heo <tj@kernel.org>
To: David Vernet <void@manifault.com>,
Andrea Righi <arighi@nvidia.com>,
Changwoo Min <changwoo@igalia.com>
Cc: sched-ext@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: [PATCH sched_ext/for-6.19] sched_ext: Fix scx_bpf_dsq_insert() backward binary compatibility
Date: Tue, 21 Oct 2025 06:47:57 -1000 [thread overview]
Message-ID: <c860cc12b4b0da311fa8cbbbe17f8199@kernel.org> (raw)
commit cded46d97159 ("sched_ext: Make scx_bpf_dsq_insert*() return bool")
introduced a new bool-returning scx_bpf_dsq_insert() and renamed the old
void-returning version to scx_bpf_dsq_insert___compat, with the expectation
that libbpf would match old binaries to the ___compat variant, maintaining
backward binary compatibility. However, while libbpf ignores ___suffix on
the BPF side when matching symbols, it doesn't do so for kernel-side
symbols. Old binaries compiled with the original scx_bpf_dsq_insert() could
no longer resolve the symbol.
Fix by reversing the naming: Keep scx_bpf_dsq_insert() as the old
void-returning interface and add ___new to the new bool-returning version.
This allows old binaries to continue working while new code can use the
___new variant. Once libbpf is updated to ignore kernel-side ___suffix, the
___new suffix can be dropped when the compat interface is removed.
Fixes: cded46d97159 ("sched_ext: Make scx_bpf_dsq_insert*() return bool")
Signed-off-by: Tejun Heo <tj@kernel.org>
---
kernel/sched/ext.c | 8 ++++----
tools/sched_ext/include/scx/compat.bpf.h | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -5407,7 +5407,7 @@ __bpf_kfunc_start_defs();
* scheduler, %false return triggers scheduler abort and the caller doesn't need
* to check the return value.
*/
-__bpf_kfunc bool scx_bpf_dsq_insert(struct task_struct *p, u64 dsq_id, u64 slice,
+__bpf_kfunc bool scx_bpf_dsq_insert___new(struct task_struct *p, u64 dsq_id, u64 slice,
u64 enq_flags)
{
struct scx_sched *sch;
@@ -5433,10 +5433,10 @@ __bpf_kfunc bool scx_bpf_dsq_insert(stru
/*
* COMPAT: Will be removed in v6.23.
*/
-__bpf_kfunc void scx_bpf_dsq_insert___compat(struct task_struct *p, u64 dsq_id,
+__bpf_kfunc void scx_bpf_dsq_insert(struct task_struct *p, u64 dsq_id,
u64 slice, u64 enq_flags)
{
- scx_bpf_dsq_insert(p, dsq_id, slice, enq_flags);
+ scx_bpf_dsq_insert___new(p, dsq_id, slice, enq_flags);
}
static bool scx_dsq_insert_vtime(struct scx_sched *sch, struct task_struct *p,
@@ -5532,7 +5532,7 @@ __bpf_kfunc_end_defs();
BTF_KFUNCS_START(scx_kfunc_ids_enqueue_dispatch)
BTF_ID_FLAGS(func, scx_bpf_dsq_insert, KF_RCU)
-BTF_ID_FLAGS(func, scx_bpf_dsq_insert___compat, KF_RCU)
+BTF_ID_FLAGS(func, scx_bpf_dsq_insert___new, KF_RCU)
BTF_ID_FLAGS(func, __scx_bpf_dsq_insert_vtime, KF_RCU)
BTF_ID_FLAGS(func, scx_bpf_dsq_insert_vtime, KF_RCU)
BTF_KFUNCS_END(scx_kfunc_ids_enqueue_dispatch)
--- a/tools/sched_ext/include/scx/compat.bpf.h
+++ b/tools/sched_ext/include/scx/compat.bpf.h
@@ -239,7 +239,7 @@ scx_bpf_dsq_insert_vtime(struct task_str
* scx_bpf_dsq_insert() decl to common.bpf.h and drop compat helper after v6.22.
*/
bool scx_bpf_dsq_insert___new(struct task_struct *p, u64 dsq_id, u64 slice, u64 enq_flags) __ksym __weak;
-void scx_bpf_dsq_insert___compat(struct task_struct *p, u64 dsq_id, u64 slice, u64 enq_flags) __ksym __weak;
+void scx_bpf_dsq_insert___old(struct task_struct *p, u64 dsq_id, u64 slice, u64 enq_flags) __ksym __weak;
static inline bool
scx_bpf_dsq_insert(struct task_struct *p, u64 dsq_id, u64 slice, u64 enq_flags)
@@ -247,7 +247,7 @@ scx_bpf_dsq_insert(struct task_struct *p
if (bpf_ksym_exists(scx_bpf_dsq_insert___new)) {
return scx_bpf_dsq_insert___new(p, dsq_id, slice, enq_flags);
} else {
- scx_bpf_dsq_insert___compat(p, dsq_id, slice, enq_flags);
+ scx_bpf_dsq_insert___old(p, dsq_id, slice, enq_flags);
return true;
}
}
next reply other threads:[~2025-10-21 16:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-21 16:47 Tejun Heo [this message]
2025-10-21 20:39 ` [PATCH v2 sched_ext/for-6.19] sched_ext: Fix scx_bpf_dsq_insert() backward binary compatibility Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c860cc12b4b0da311fa8cbbbe17f8199@kernel.org \
--to=tj@kernel.org \
--cc=arighi@nvidia.com \
--cc=changwoo@igalia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=void@manifault.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.