Re: [PATCH] selftests/sched_ext: Validate select_cpu_and mask constraints
From: Tejun Heo
Date: Tue Sep 08 2026 - 17:15:20 EST
Hello, Tianyi.
On Sun, Sep 06, 2026 at 10:40:29PM +0800, Tianyi Chen wrote:
> + if (cpu >= 0 &&
> + (!bpf_cpumask_test_cpu(cpu, cast_mask(mask)) ||
> + !bpf_cpumask_test_cpu(cpu, p->cpus_ptr)))
> + cpu = -ERANGE;
The syscall runs with migration disabled. With CONFIG_PREEMPT_RCU,
preemption between selection and this check can make
migrate_disable_switch() narrow p->cpus_ptr to the running CPU, rejecting a
valid selection on another CPU. Please check the requested affinity instead.
> + SCX_FAIL_IF(sched_getaffinity(0, sizeof(original), &original),
> + "Failed to get affinity (%d)", errno);
Please use dynamically allocated masks. The fixed cpu_set_t makes
sched_getaffinity() fail with EINVAL when nr_cpu_ids exceeds 1024, even if
the task only uses low-numbered CPUs.
Thanks.
--
tejun