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

sched_ext: Build the cid tables privately and publish them with RCU

The cid tables are visible to the cid kfuncs while being modified: the
first enable publishes the global pointers before filling them,
ops.init_cids() overrides rewrite them in place, and re-enables rebuild
them in place. A racing TRACING or SYSCALL program can read unfilled
entries, including uninitialized memory in the kmalloc'd tables, or torn
topo updates.

Tie the tables' lifetimes to the root sched instead: each root enable
builds a fresh set privately and publishes the per-table __rcu globals once
the layout is final, and root disable unpublishes and RCU-frees the set. A
non-NULL global is now always a fully built table which stays valid for the
reader's RCU read section, and lookups stay two loads. Kfuncs treat NULL as
no-mapping, also after the scheduler exits instead of reporting the stale
last mapping.

The cid kfuncs are available whether the root scheduler is cid-form or
cpu-form, the latter to allow gradual migration to cids. Every root
therefore builds and publishes a default mapping.

Every reader must either be gated on scheduler liveness or NULL-check
inside an RCU read section. Fix the two kfuncs that were neither:
scx_bpf_this_cid() read the table with no RCU or preemption protection and
scx_bpf_task_cid() relied on KF_RCU, which doesn't put a sleepable program
in an RCU read section. The hotplug callbacks are instead serialized by
retiring the tables inside the cpus_read_lock() section that clears
scx_root.

v2: Document why every root builds the tables (desc + cid.c comment).
Published: 2026-10-23
Score: n/a
EPSS: n/a
KEV: No
Impact: Information Exposure (uninitialized kernel memory leakage)
Action: Apply Patch
AI Analysis

Impact

The Linux kernel's scheduler extension previously exposed the CID (CPU ID) tables to readers while they were still being constructed. During a race between the enabling process and the final publish step, a tracing or system‑call program could observe uninitialized entries or partially updated structures in memory. This race condition creates a path to read kernel memory that has never been defined, potentially leaking confidential data. The flaw is an information‐exposure weakness rooted in improper synchronization of read‑copy‑update (RCU) publishing, as described by CWE‑200 and CWE‑788.

Affected Systems

The vulnerability affects the canonical Linux kernel across all upstream releases that have not yet incorporated the fix. No specific version list is available, so any kernel build preceding the authors’ patch revision is potentially vulnerable. The flaw surfaces in the sched_ext and cid kfuncs components of the kernel and is triggered when CID tables are built by the root scheduler.

Risk and Exploitability

Because the advisory does not supply CVSS, EPSS, or KEV data, the exact severity is unknown; the risk profile is therefore uncertain. As the race requires a process capable of invoking tracing or system calls that access the CID tables, the likely attack surface is an elevated local user or a compromised service with tracing privileges. The advisory labels the issue as a confidentiality concern, but no direct path to code execution is described. In the absence of public exploit evidence or high‑confidence metrics, the vulnerability remains a moderate‑to‑significant risk for affected deployments, especially those that enable tracing or bind to the new CID‑based scheduler.

Generated by OpenCVE AI on October 23, 2026 at 14:28 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that defers publishing of CID tables until construction is complete; this resolves the race condition.
  • If a patch is unavailable, limit the use of tracing or system‑call instrumentation that can read CID tables, and ensure that such capabilities are restricted to privileged users.
  • Modify any custom code that calls scx_bpf_this_cid() or scx_bpf_task_cid() to guard against NULL pointers or to execute within a proper RCU read section; adding explicit NULL checks mitigates accidental leakage until the kernel is updated.

Generated by OpenCVE AI on October 23, 2026 at 14:28 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 23 Oct 2026 14:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-200
CWE-788

Fri, 23 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: sched_ext: Build the cid tables privately and publish them with RCU The cid tables are visible to the cid kfuncs while being modified: the first enable publishes the global pointers before filling them, ops.init_cids() overrides rewrite them in place, and re-enables rebuild them in place. A racing TRACING or SYSCALL program can read unfilled entries, including uninitialized memory in the kmalloc'd tables, or torn topo updates. Tie the tables' lifetimes to the root sched instead: each root enable builds a fresh set privately and publishes the per-table __rcu globals once the layout is final, and root disable unpublishes and RCU-frees the set. A non-NULL global is now always a fully built table which stays valid for the reader's RCU read section, and lookups stay two loads. Kfuncs treat NULL as no-mapping, also after the scheduler exits instead of reporting the stale last mapping. The cid kfuncs are available whether the root scheduler is cid-form or cpu-form, the latter to allow gradual migration to cids. Every root therefore builds and publishes a default mapping. Every reader must either be gated on scheduler liveness or NULL-check inside an RCU read section. Fix the two kfuncs that were neither: scx_bpf_this_cid() read the table with no RCU or preemption protection and scx_bpf_task_cid() relied on KF_RCU, which doesn't put a sleepable program in an RCU read section. The hotplug callbacks are instead serialized by retiring the tables inside the cpus_read_lock() section that clears scx_root. v2: Document why every root builds the tables (desc + cid.c comment).
Title sched_ext: Build the cid tables privately and publish them with RCU
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-23T12:12:14.180Z

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

Link: CVE-2026-98942

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:15.193

Modified: 2026-10-23T13:17:15.193

Link: CVE-2026-98942

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T14:30:13Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor

  • CWE-788

    Access of Memory Location After End of Buffer