sched_ext: Derive SCX_RQ_IN_WAKEUP from the core enqueue flags
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.18.55, 6.20, 7.2.9
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: sched_ext: Derive SCX_RQ_IN_WAKEUP from the core enqueue flags schedule_deferred_locked() skips scheduling a deferred action while SCX_RQ_IN_WAKEUP is set and relies on the task_woken_scx() call that follows a wakeup enqueue to run it. enqueue_task_scx() sets the flag from the merged enqueue flags, which include the flags stashed for a remote activation. move_remote_task_to_local_dsq() thus sets SCX_RQ_IN_WAKEUP on the destination rq when the moved task was woken up, although no task_woken_scx() follows that activation. An IMMED insert into a busy destination requests a local reenqueue during that enqueue. The request gets linked but not scheduled and stays pending until an unrelated wakeup or preemption on that CPU runs the deferred actions. The IMMED task sits behind the running task in the meantime. If nothing runs them before the scheduler is disabled, the request outlives the scheduler and points into its freed per-cpu area, which the next scheduler dereferences from run_deferred(). Test the core enqueue flags for the wakeup bit. Only the core's wakeup path is followed by task_woken_scx().
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 997967adf10ce26c3e7bd89598b3ded62b943052 · fixed in 6c401ae426e20e53a3398a8e79afd0964c0f5110; From 57ccf5ccdc56954f2a91a7f66684fd31c566bde5 · fixed in 3fdf2ceb31e8aff77451e468bc8409e10587916a; From 57ccf5ccdc56954f2a91a7f66684fd31c566bde5 · fixed in df5cdc2c832ca4e8a6d774596b9005558761a403; From 6.18.19 · fixed in 6.18.55; From 6.19.9 · fixed in 6.20
- Linux Linux
7.0
- KernelLinux
fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9