CVE-2026-89517: Software Security Vulnerability Vulnerability

UNKNOWN
Advisory Identifier: GHSA-xg94-9m82-xc6c
Published
Advisory Summary

CVE-2026-89517 is a security vulnerability vulnerability (General Security Weakness) affecting Software libraries in the Maven ecosystem. Remediation is available in the latest vendor maintenance releases.

CVE-2026-89517 at a Glance

CVE Identifier CVE-2026-89517
GHSA Identifier GHSA-xg94-9m82-xc6c
Severity N/A
CVSS v3.1 Base Score N/A
CWE Classification General Security Weakness
Affected Product Software
Package Ecosystem Maven
Published Date
Last Updated

How to Fix CVE-2026-89517

To remediate this vulnerability, upgrade all affected Software dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

mvn dependency:tree

How to Check if You Are Affected

To determine whether your Java application is affected by CVE-2026-89517, inspect your build dependencies using the Maven Dependency Plugin:

mvn dependency:tree

Analyze the terminal output to locate any version of Software in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than the patched release), your application is affected.

Note: The mvn dependency:tree command inspects the resolved dependency graph declared in your project's POM files; it does not perform automated security scanning or inspect runtime dynamic classpaths. Always verify runtime container classpaths and shaded JARs.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under General Security Weakness. In Software, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

In the Linux kernel, the following vulnerability has been resolved: sched_ext: Fix rq->core_pick corruption under core scheduling Core scheduling's pick_next_task() picks what to run on every SMT sibling of the core in a single pass under the shared core-wide rq lock. The selection state is consistent only while the lock is held continuously, so ->pick_task() originally could not release it. However, since 4c95380701f5 ("sched/ext: Fold balance_scx() into pick_task_scx()"), sched_ext runs dispatch from inside the pick and dispatching can drop the rq lock. To support this, pick_next_task() has been updated to restart the whole selection when a pick returns RETRY_TASK after releasing the lock. When selections on the same core interleave through the dropped lock, they corrupt each other's state: one clears the other's rq->core_pick leading to a NULL deref, or invalidates its keep-the-previous-task decision leaving a dequeued task running, which deadlocks the next wakeup and matches the reported hard hangs. A cookied ping-pong load on an SMT machine makes the interleavings frequent and kills the kernel within seconds. Fix it by making the pick return RETRY_TASK whenever dispatch released the rq lock, so that a selection only ever commits picks made under a continuously held lock. The previous patch's rq->scx.lock_drop_seq counts the releases. A dispatch that touched nothing never releases the lock and its verdict, including "nothing to run", stands: retries are bounded, each following a dispatch that actually did something, and an idle CPU does not loop. If another dispatch is already in flight on the rq, skip dispatching and pick from what is already queued locally - the in-flight dispatch has released the lock, so its own selection will retry and re-pick this rq, while returning RETRY_TASK here would only spin on the lock that dispatch needs to finish. Balance callbacks must run in the context that queued them, so they can only be queued on the CPU's own rq. When dispatching for another rq, run the deferred work directly instead - that rq may consume all its picks through the core-sched fast path and never queue the callback itself. The put_prev_task_scx() warning about a runnable task being left behind assumed that dispatch ran as part of the very pick that is switching away. That now only holds on the non-core path, so gate it and drop the cookie-match test, which is always true without core scheduling, from its condition.

References

Frequently Asked Questions

What is CVE-2026-89517?
CVE-2026-89517 is a security vulnerability in Software classified as a security vulnerability vulnerability under General Security Weakness.
Which Software versions are affected?
Affected versions include releases prior to current release patches.
What version fixes CVE-2026-89517?
Upgrading to current release patches (or the latest patched release for your respective branch) resolves the vulnerability.
What CWE is associated with CVE-2026-89517?
CVE-2026-89517 is classified under General Security Weakness.
How can I check Maven dependencies for CVE-2026-89517?
Run the dependency tree command: 'mvn dependency:tree'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-xg94-9m82-xc6c",
  "modified" : "2026-09-11T21:31:30Z",
  "published" : "2026-09-11T21:31:30Z",
  "aliases" : [ "CVE-2026-89517" ],
  "details" : "In the Linux kernel, the following vulnerability has been resolved:\n\nsched_ext: Fix rq->core_pick corruption under core scheduling\n\nCore scheduling's pick_next_task() picks what to run on every SMT sibling of\nthe core in a single pass under the shared core-wide rq lock. The selection\nstate is consistent only while the lock is held continuously, so\n->pick_task() originally could not release it. However, since 4c95380701f5\n(\"sched/ext: Fold balance_scx() into pick_task_scx()\"), sched_ext runs\ndispatch from inside the pick and dispatching can drop the rq lock. To\nsupport this, pick_next_task() has been updated to restart the whole\nselection when a pick returns RETRY_TASK after releasing the lock.\n\nWhen selections on the same core interleave through the dropped lock, they\ncorrupt each other's state: one clears the other's rq->core_pick leading to\na NULL deref, or invalidates its keep-the-previous-task decision leaving a\ndequeued task running, which deadlocks the next wakeup and matches the\nreported hard hangs. A cookied ping-pong load on an SMT machine makes the\ninterleavings frequent and kills the kernel within seconds.\n\nFix it by making the pick return RETRY_TASK whenever dispatch released the\nrq lock, so that a selection only ever commits picks made under a\ncontinuously held lock. The previous patch's rq->scx.lock_drop_seq counts\nthe releases. A dispatch that touched nothing never releases the lock and\nits verdict, including \"nothing to run\", stands: retries are bounded, each\nfollowing a dispatch that actually did something, and an idle CPU does not\nloop.\n\nIf another dispatch is already in flight on the rq, skip dispatching and\npick from what is already queued locally - the in-flight dispatch has\nreleased the lock, so its own selection will retry and re-pick this rq,\nwhile returning RETRY_TASK here would only spin on the lock that dispatch\nneeds to finish.\n\nBalance callbacks must run in the context that queued them, so they can only\nbe queued on the CPU's own rq. When dispatching for another rq, run the\ndeferred work directly instead - that rq may consume all its picks through\nthe core-sched fast path and never queue the callback itself.\n\nThe put_prev_task_scx() warning about a runnable task being left behind\nassumed that dispatch ran as part of the very pick that is switching away.\nThat now only holds on the non-core path, so gate it and drop the\ncookie-match test, which is always true without core scheduling, from its\ncondition.",
  "severity" : [ ],
  "affected" : [ ],
  "references" : [ {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-89517"
  }, {
    "type" : "WEB",
    "url" : "https://git.kernel.org/stable/c/cdafb68155bee2d5c4e50c12e4606323e9334e6b"
  }, {
    "type" : "WEB",
    "url" : "https://git.kernel.org/stable/c/d954004205c1a1d3f59ce8482b559266c15600fa"
  } ],
  "database_specific" : {
    "cwe_ids" : [ ],
    "severity" : null,
    "github_reviewed" : false,
    "github_reviewed_at" : null,
    "nvd_published_at" : "2026-09-11T20:19:34Z"
  }
}