---
id: CVE-2026-89519
title: 'sched_ext: Replace SCX_RQ_BAL_KEEP with a dispatch verdict return'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  sched_ext: Replace SCX_RQ_BAL_KEEP with a dispatch verdict return

  SCX_RQ_BAL_KEEP tells the pick to keep running the previous task, a leftover
  from when balancing and …
severity: medium
cvss: 5.5
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'
cvssSource: vendor
cwe:
  - CWE-367
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 4c95380701f58b8112f0b891de8d160e4199e19d <
    6f1d3bfe54430f8d54e0530a27f2ecbf8466576e
  - >-
    Linux >= 4c95380701f58b8112f0b891de8d160e4199e19d <
    ffaab58d217581cb75353168f8812a16e10463fc
  - Linux 6.19
published: '2026-09-11'
updated: '2026-10-19'
sourceUpdated: '2026-10-19T08:48:10.533Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-89519'
references:
  - url: 'https://git.kernel.org/stable/c/6f1d3bfe54430f8d54e0530a27f2ecbf8466576e'
  - url: 'https://git.kernel.org/stable/c/ffaab58d217581cb75353168f8812a16e10463fc'
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89519.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-89519'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2532339'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-89519'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89519'
  - url: >-
      https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89519.mbox
tags:
  - cve.org
  - csaf
  - vex
  - red-hat
epss: 0.00198
epssPercentile: 0.09434
ingestedAt: '2026-09-14T11:11:19.886Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

sched_ext: Replace SCX_RQ_BAL_KEEP with a dispatch verdict return

SCX_RQ_BAL_KEEP tells the pick to keep running the previous task, a leftover
from when balancing and picking were separate operations. An rq-level flag
only works while dispatches and picks pair up one to one, which core
scheduling breaks: selections interleave through dispatch's lock drops and a
pick can consume a stale flag, keeping a task that has since been dequeued.
Fixing core scheduling support requires the decision to travel with the
dispatch that made it. Make scx_dispatch_sched() and balance_one() return an
explicit verdict instead and drop the flag's plumbing from the tools autogen
enum headers.

Also factor the pick-side invocation, its follow-up queueing and the
post-dispatch checks out of do_pick_task_scx() into dispatch_pick(). No
functional changes intended.

v2: Drop the SCX_RQ_BAL_KEEP plumbing from the tools autogen enum headers
    as well (Andrea).

## Affected

- `Linux >= 4c95380701f58b8112f0b891de8d160e4199e19d < 6f1d3bfe54430f8d54e0530a27f2ecbf8466576e`
- `Linux >= 4c95380701f58b8112f0b891de8d160e4199e19d < ffaab58d217581cb75353168f8812a16e10463fc`
- `Linux 6.19`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Moderate · updated 2026-09-16 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89519.json)
