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