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.
Product status
8e4f0b1ebcf2180ab594f204f01279a666dadf3b (git) before 72c43eb2e334febe93018cfb68ae828f55c6e49e
8e4f0b1ebcf2180ab594f204f01279a666dadf3b (git) before b4992a9446bb9a639007bfd32bf5c5a7e30199e5
8e4f0b1ebcf2180ab594f204f01279a666dadf3b (git) before 0c4a59df370bea245695c00aaae6ae75747139bd
6.18
Any version before 6.18
6.18.22 (semver)
6.19.12 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/72c43eb2e334febe93018cfb68ae828f55c6e49e
git.kernel.org/...c/b4992a9446bb9a639007bfd32bf5c5a7e30199e5
git.kernel.org/...c/0c4a59df370bea245695c00aaae6ae75747139bd