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: 4.7 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Information Exposure
Action: Apply Patch
AI Analysis

Impact

The Linux kernel scheduler extension publishes the CID tables before fully constructing them, causing a race between enabling and final publishing. A tracing or system-call program can read these incomplete tables and discover uninitialized kernel memory, leading to information leakage. This represents an information-exposure flaw tied to CWE-820. The vulnerability arises from inadequate RCU synchronization and lack of null checks in certain helper functions, scx_bpf_this_cid() and scx_bpf_task_cid(), which further expose kernel data.

Affected Systems

All upstream Linux kernel releases that have not yet incorporated the patch for CVE‑2026‑98942 are, as the flaw resides in the sched_ext and cid helper components of the scheduler. The issue is present in both CPU-form and CID-form scheduler roots, and any kernel built before the fix could allow a local or privileged attacker to trigger the race condition by enabling or disabling the scheduler.

Risk and Exploitability

The CVSS score of 4.7 indicates a moderate severity, while the EPSS score of <1% suggests a low exploitation probability. The vulnerability is not listed in the CISA KEV catalog. The likely attack vector is exploitation by a local user or process that can trigger tracing or bpf helpers to read the CID tables during a scheduler transition, potentially leaking confidential kernel memory. The flaw does not enable direct code execution or privilege escalation.

Generated by OpenCVE AI on October 29, 2026 at 22:49 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains the CVE‑2026‑98942 fix, which corrects the RCU handling and null‑check logic in the CID tables.
  • If an upgrade cannot be performed immediately, disable or restrict access to eBPF programs that invoke the vulnerable helper functions scx_bpf_this_cid() or scx_bpf_task_cid() to prevent the race condition from being triggered by user space.
  • Continue to monitor system logs for RCU or CID table related errors and apply subsequent vendor patches as soon as they are released, ensuring that the kernel operates with fully built tables only.

Generated by OpenCVE AI on October 29, 2026 at 22:49 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 29 Oct 2026 21:15:00 +0000

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

Thu, 29 Oct 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-820
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.7, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:H'}

threat_severity

Moderate


Fri, 23 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

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 Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-26T06:56:52.637Z

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-26T07:17:18.007

Link: CVE-2026-98942

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-23T12:12:14Z

Links: CVE-2026-98942 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T23:00:06Z

Weaknesses