CVE-2025-21897: sched_ext: Fix pick_task_scx() picking non-queued tasks when it's called without balance()
In the Linux kernel, the following vulnerability has been resolved:
sched_ext: Fix pick_task_scx() picking non-queued tasks when it's called without balance()
a6250aa251ea ("sched_ext: Handle cases where pick_task_scx() is called
without preceding balance_scx()") added a workaround to handle the cases
where pick_task_scx() is called without prececing balance_scx() which is due
to a fair class bug where pick_taks_fair() may return NULL after a true
return from balance_fair().
The workaround detects when pick_task_scx() is called without preceding
balance_scx() and emulates SCX_RQ_BAL_KEEP and triggers kicking to avoid
stalling. Unfortunately, the workaround code was testing whether @prev was
on SCX to decide whether to keep the task running. This is incorrect as the
task may be on SCX but no longer runnable.
This could lead to a non-runnable task to be returned from pick_task_scx()
which cause interesting confusions and failures. e.g. A common failure mode
is the task ending up with (!on_rq && on_cpu) state which can cause
potential wakers to busy loop, which can easily lead to deadlocks.
Fix it by testing whether @prev has SCX_TASK_QUEUED set. This makes
@prev_on_scx only used in one place. Open code the usage and improve the
comment while at it.
Security readout for executives and security teams
Plain-English summary
CVE-2025-21897 is a Linux kernel scheduler bug in sched_ext. Under specific scheduling paths, the kernel could select a task that is no longer runnable, causing confused task state and potential deadlocks. Business impact is primarily availability risk for systems running affected Linux versions. The source bundle does not provide CVSS, attack vector, or exploitation evidence.
Executive priority
Treat as a targeted availability-risk review, not an emergency internet-wide exposure based on current evidence. Prioritize affected Linux fleets where sched_ext is enabled or where kernel deadlocks would disrupt critical services. Patch through normal kernel maintenance once vendor-fixed builds are available.
Technical view
pick_task_scx() could be called without a preceding balance_scx() and incorrectly kept the previous task based on SCX membership rather than SCX_TASK_QUEUED. That could return a non-runnable task, producing states such as !on_rq with on_cpu and causing wakers to busy loop. Stable kernel commits change the test to require queued state.
Likely exposure
Exposure appears limited to Linux systems with affected kernel builds containing the sched_ext regression. The bundle lists Linux 6.12, 6.12.18, 6.13.6, and 6.14-related version data, but does not clarify distribution backports or configuration prerequisites.
Exploitation context
The source bundle does not state active exploitation, public proof of concept, or inclusion in CISA KEV. The described failure mode is reliability-oriented: scheduler confusion, busy-looping wakers, and deadlocks. No remote attack path is documented in the provided sources.
Researcher notes
Key uncertainty is practical reachability: the bundle explains an internal scheduler bug but not attacker control, privilege boundary, or required configuration. Validation should focus on affected kernel lineage, sched_ext usage, and whether downstream vendors backported the stable fix under different version numbers.
Mitigation direction
Check vendor kernel advisories for your distribution or appliance platform.
Update to a kernel build containing the referenced stable fixes.
Prioritize systems using experimental or custom sched_ext scheduling behavior.
If patching is delayed, review vendor guidance for safe sched_ext configuration changes.
Validation and detection
Inventory Linux kernel versions across servers, images, and appliances.
Identify workloads using sched_ext or custom scheduler extensions.
Compare deployed kernels against vendor-fixed releases or referenced stable commits.
Review availability incidents for deadlocks or scheduler-related stalls after kernel upgrades.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-21897 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Apr 1, 2025, 15:26 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.