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

sched_ext: Don't run ops.dequeue() with a DSQ lock held

ops.dequeue() is invoked with the source user DSQ's lock still held on
the consume and move paths (scx_consume_dispatch_q(),
move_task_between_dsqs()). A BPF scheduler which locks the source user
DSQ from ops.dequeue() - e.g. by iterating it with bpf_iter_scx_dsq -
self-deadlocks.

ops.dequeue() can only call the "any" kfuncs and none of them can lock a
builtin DSQ, so the global and bypass paths can't deadlock; however,
all DSQ locks share one lockdep class, so iterating any user DSQ from
ops.dequeue() on those paths trips the recursion check.

Move the invocation after the DSQ unlock on all three paths.
SCX_TASK_IN_CUSTODY is cleared under the lock serializing the transfer
so that the callback is invoked exactly once.
Published: 2026-10-18
Score: n/a
EPSS: n/a
KEV: No
Impact: Denial of Service (system lockup)
Action: Patch Kernel
AI Analysis

Impact

The vulnerability exists in the Linux kernel scheduler extension where ops.dequeue() is invoked while a dynamic scheduler queue (DSQ) lock is still held. This causes a recursion check in the kernel’s lockdep subsystem to trigger, resulting in a self‑deadlock. The deadlock stalls task scheduling, freezing all runnable processes and causing the system to become unresponsive. This is a concurrency control flaw that leads to denial of service; no direct data disclosure or code execution is involved.

Affected Systems

All Linux kernel builds that include the unpatched scheduler routine are affected, as the bug resides in core scheduler code. The advisory refers to kernel git commits cb86607 and fe499ae, indicating that any kernel version prior to these changes can be vulnerable. Because the affected range is not enumerated, users should verify that their running kernel contains the fixes and upgrade if necessary.

Risk and Exploitability

The CVSS score and EPSS data are not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is local, requiring the attacker to load or modify a BPF scheduler that iterates over a user DSQ, which normally requires elevated privileges or the ability to execute untrusted BPF code. For systems that permit dynamic BPF programs and are not restricted by security modules, the risk is medium to high; for tightly controlled environments the risk is lower. Exploitation would result in an availability loss due to the scheduler deadlock.

Generated by OpenCVE AI on October 18, 2026 at 21:20 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply a kernel update that includes the commits cb86607 and fe499ae.
  • Reboot the system after the update so the new scheduler code is loaded.
  • If a kernel upgrade is not possible, restrict or disable BPF program loading to prevent a BPF scheduler from iterating DSQs, thereby avoiding the deadlock path.

Generated by OpenCVE AI on October 18, 2026 at 21:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 18 Oct 2026 21:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-771

Sun, 18 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: sched_ext: Don't run ops.dequeue() with a DSQ lock held ops.dequeue() is invoked with the source user DSQ's lock still held on the consume and move paths (scx_consume_dispatch_q(), move_task_between_dsqs()). A BPF scheduler which locks the source user DSQ from ops.dequeue() - e.g. by iterating it with bpf_iter_scx_dsq - self-deadlocks. ops.dequeue() can only call the "any" kfuncs and none of them can lock a builtin DSQ, so the global and bypass paths can't deadlock; however, all DSQ locks share one lockdep class, so iterating any user DSQ from ops.dequeue() on those paths trips the recursion check. Move the invocation after the DSQ unlock on all three paths. SCX_TASK_IN_CUSTODY is cleared under the lock serializing the transfer so that the callback is invoked exactly once.
Title sched_ext: Don't run ops.dequeue() with a DSQ lock held
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-18T15:51:26.449Z

Reserved: 2026-09-25T10:25:14.377Z

Link: CVE-2026-98865

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:40.973

Modified: 2026-10-18T16:17:40.973

Link: CVE-2026-98865

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-18T21:30:14Z

Weaknesses
  • CWE-771

    Missing Reference to Active Allocated Resource