What’s Vulnerable › Vulnerabilities
CVE-2026-31734: sched_ext: Fix is_bpf_migration_disabled() false negative on non-PREEMPT_RCU
- Severity: medium (CVSS 5.5 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.1% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2026-05-01 · updated 2026-06-17
Description
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.
Affected products
- Linux kernel: from 6.18 before 6.18.22; from 6.19 before 6.19.12; 7.0-rc1, 7.0-rc2, 7.0-rc3, 7.0-rc4, 7.0-rc5, 7.0-rc6 — fixed in 6.18.22, 6.19.12
How to fix
Upgrade to a fixed version: Linux kernel 6.18.22, 6.19.12. Check the vendor advisory for mitigations.
References
- https://git.kernel.org/stable/c/0c4a59df370bea245695c00aaae6ae75747139bd
- https://git.kernel.org/stable/c/72c43eb2e334febe93018cfb68ae828f55c6e49e
- https://git.kernel.org/stable/c/b4992a9446bb9a639007bfd32bf5c5a7e30199e5
Get alerted when CVE-2026-31734 or the next vulnerability affects your stack