diff options
| author | Liang Luo <luoliang@kylinos.cn> | 2026-06-26 17:59:28 +0800 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-06-26 12:04:33 -1000 |
| commit | 0cfd929fba41c8500c26068365de33274591e82d (patch) | |
| tree | 011bce1e7579ecf48d03b0d16e2059f322248308 | |
| parent | e2c60e15d0803d58d757dbfa5db6e528571248a5 (diff) | |
| download | linux-0cfd929fba41c8500c26068365de33274591e82d.tar.gz linux-0cfd929fba41c8500c26068365de33274591e82d.zip | |
tools/sched_ext: fix getopt() option variable signedness
Four example schedulers (scx_simple, scx_cpu0, scx_sdt, scx_userland)
declare the variable that holds getopt()'s return value as __u32.
getopt() returns int and uses -1 to mark end-of-options; storing that
sentinel in an unsigned variable turns it into 0xffffffff, and the
subsequent 'opt != -1' test only happens to keep working because both
operands of != are promoted to the same 0xffffffff.
Declare the variable as __s32 instead, matching getopt()'s actual
contract and the style already used in scx_qmap.c (int opt) and
scx_pair/central/flatcg.c (__s32 opt). This also silences the
-Wsign-compare warnings emitted for the affected files.
Signed-off-by: Liang Luo <luoliang@kylinos.cn>
Signed-off-by: Tejun Heo <tj@kernel.org>
| -rw-r--r-- | tools/sched_ext/scx_cpu0.c | 2 | ||||
| -rw-r--r-- | tools/sched_ext/scx_sdt.c | 2 | ||||
| -rw-r--r-- | tools/sched_ext/scx_simple.c | 2 | ||||
| -rw-r--r-- | tools/sched_ext/scx_userland.c | 2 |
4 files changed, 4 insertions, 4 deletions
diff --git a/tools/sched_ext/scx_cpu0.c b/tools/sched_ext/scx_cpu0.c index 4966e3d4c724..84a47aee2f95 100644 --- a/tools/sched_ext/scx_cpu0.c +++ b/tools/sched_ext/scx_cpu0.c @@ -62,7 +62,7 @@ int main(int argc, char **argv) { struct scx_cpu0 *skel; struct bpf_link *link; - __u32 opt; + __s32 opt; __u64 ecode; libbpf_set_print(libbpf_print_fn); diff --git a/tools/sched_ext/scx_sdt.c b/tools/sched_ext/scx_sdt.c index bf664b2d3785..ef197b266a36 100644 --- a/tools/sched_ext/scx_sdt.c +++ b/tools/sched_ext/scx_sdt.c @@ -44,7 +44,7 @@ int main(int argc, char **argv) { struct scx_sdt *skel; struct bpf_link *link; - __u32 opt; + __s32 opt; __u64 ecode; libbpf_set_print(libbpf_print_fn); diff --git a/tools/sched_ext/scx_simple.c b/tools/sched_ext/scx_simple.c index c3b48611712b..34f9785335b7 100644 --- a/tools/sched_ext/scx_simple.c +++ b/tools/sched_ext/scx_simple.c @@ -64,7 +64,7 @@ int main(int argc, char **argv) { struct scx_simple *skel; struct bpf_link *link; - __u32 opt; + __s32 opt; __u64 ecode; libbpf_set_print(libbpf_print_fn); diff --git a/tools/sched_ext/scx_userland.c b/tools/sched_ext/scx_userland.c index 616043c165e6..192b79c7e4aa 100644 --- a/tools/sched_ext/scx_userland.c +++ b/tools/sched_ext/scx_userland.c @@ -326,7 +326,7 @@ static int spawn_stats_thread(void) static void pre_bootstrap(int argc, char **argv) { int err; - __u32 opt; + __s32 opt; struct sched_param sched_param = { .sched_priority = sched_get_priority_max(SCHED_EXT), }; |
