CVE-2026-31734 PUBLISHED

sched_ext: Fix is_bpf_migration_disabled() false negative on non-PREEMPT_RCU

Assigner: Linux
Reserved: 09.03.2026 Published: 01.05.2026 Updated: 01.05.2026

In the Linux kernel, the following vulnerability has been resolved:

sched_ext: Fix is_bpf_migration_disabled() false negative on non-PREEMPT_RCU

Since commit 8e4f0b1ebcf2 ("bpf: use rcu_read_lock_dont_migrate() for trampoline.c"), the BPF prolog (__bpf_prog_enter) calls migrate_disable() only when CONFIG_PREEMPT_RCU is enabled, via rcu_read_lock_dont_migrate(). Without CONFIG_PREEMPT_RCU, the prolog never touches migration_disabled, so migration_disabled == 1 always means the task is truly migration-disabled regardless of whether it is the current task.

The old unconditional p == current check was a false negative in this case, potentially allowing a migration-disabled task to be dispatched to a remote CPU and triggering scx_error in task_can_run_on_remote_rq().

Only apply the p == current disambiguation when CONFIG_PREEMPT_RCU is enabled, where the ambiguity with the BPF prolog still exists.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 8e4f0b1ebcf2180ab594f204f01279a666dadf3b to 72c43eb2e334febe93018cfb68ae828f55c6e49e (excl.)
  • affected from 8e4f0b1ebcf2180ab594f204f01279a666dadf3b to b4992a9446bb9a639007bfd32bf5c5a7e30199e5 (excl.)
  • affected from 8e4f0b1ebcf2180ab594f204f01279a666dadf3b to 0c4a59df370bea245695c00aaae6ae75747139bd (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 6.18 is affected
  • unaffected from 0 to 6.18 (excl.)
  • unaffected from 6.18.22 to 6.18.* (incl.)
  • unaffected from 6.19.12 to 6.19.* (incl.)
  • unaffected from 7.0 to * (incl.)

References