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

cxl: Fix CXL_HEADERLOG_SIZE to match RAS Capability size

The CXL r4.0 8.2.4.17.7 RAS Capability Structure has total length 0x58
bytes (CXL_RAS_CAPABILITY_LENGTH); the Header Log occupies the trailing
64 bytes at offset 0x18. CXL_HEADERLOG_SIZE was defined as SZ_512,
eight times the actual on-device size.

header_log_copy() reads CXL_HEADERLOG_SIZE_U32 (128) dwords from the
RAS capability iomap, overrunning the 88-byte mapping by 448 bytes.
The cxl_aer_uncorrectable_error trace event memcpy()s CXL_HEADERLOG_SIZE
(512) bytes from its source. For the CPER caller the source is
struct cxl_ras_capability_regs::header_log[16] (64 bytes) embedded in a
stack-local cxl_cper_prot_err_work_data, so the memcpy reads 448 bytes
of kernel stack into the trace event ring buffer where userspace can
read it via tracefs.

Set CXL_HEADERLOG_SIZE to 64 and derive CXL_HEADERLOG_SIZE_U32 from it,
bringing all iomap readers into agreement on 16 dwords. Userspace tools
such as rasdaemon have grown a dependency on the buggy 512-byte (128 u32)
header_log layout in the cxl_aer_uncorrectable_error trace event. Add
CXL_HEADERLOG_TRACE_SIZE_U32 = 128 and use it for the trace event
__array and its memcpy to preserve that ABI. Both callers now pass a
zero-filled u32[CXL_HEADERLOG_TRACE_SIZE_U32] staging buffer with only
the first CXL_HEADERLOG_SIZE_U32 (16) entries populated from hardware;
the remaining 112 u32s are zero-padded, keeping the 512-byte trace ring
buffer layout intact.

[ dj: Replaced 64 with SZ_64 per RichardC ]
Published: 2026-08-28
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A mismatch between the defined header log size in the CXL RAS capability structure and the actual hardware size causes the kernel to copy 512 bytes of data from the CXL header log instead of the intended 64 bytes. This results in a buffer overrun that reads beyond the mapped 88‑byte region, spilling kernel stack contents into the CXL_AER trace event. Userspace applications that read this event through tracefs can therefore obtain kernel memory that was not intended to be exposed, creating a potential information‑disclosure risk. The flaw is driven by an out‑of‑bounds read and a memcpy that overflows the ring buffer used for trace events. The likely attack vector is a local process that can trigger the erroneous memcpy by causing a CXL_AER trace event.

Affected Systems

All Linux kernel releases that contain the pre‑patch version of the CXL driver. The vulnerability is present in the generic Linux kernel, with no vendor‑specific version constraints listed in the advisory. Administrators should verify whether their kernel build includes the older CXL_HEADERLOG_SIZE definition and apply the latest upstream fixes. It is inferred that any kernel build compiling the older CXL driver without the patch is affected.

Risk and Exploitability

The CVSS score is not provided, and the EPSS score is unavailable, which limits quantitative risk assessment. The vulnerability is discovered in kernel space and requires the ability to trigger the erroneous memcpy—generally available to local privileged users or processes that can generate the trace event. Since the leaked data can be accessed via tracefs, which may be readable by non‑root users on many systems, the impact may be felt by a broader set of users than just those with root. The likely attack vector is a local user with the ability to trigger the CXL_AER trace event or to read tracefs data. Though the issue does not provide direct remote code execution, the information exposure could aid a subsequent attack or privilege escalation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog as of this analysis.

Generated by OpenCVE AI on August 28, 2026 at 11:54 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a release that contains the commit that corrects CXL_HEADERLOG_SIZE and adjusts the trace event size to preserve ABI compatibility
  • If an immediate kernel upgrade is not feasible, disable or restrict access to the tracefs subsystem to limit exposure of the erroneous trace events, for example by setting appropriate mount options or using kernel parameters to disable these tracepoints
  • Monitor kernel logs for cxl_aer_uncorrectable_error events, and consider temporarily disabling the affected trace event until the kernel patch is applied to prevent accidental leaks

Generated by OpenCVE AI on August 28, 2026 at 11:54 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: cxl: Fix CXL_HEADERLOG_SIZE to match RAS Capability size The CXL r4.0 8.2.4.17.7 RAS Capability Structure has total length 0x58 bytes (CXL_RAS_CAPABILITY_LENGTH); the Header Log occupies the trailing 64 bytes at offset 0x18. CXL_HEADERLOG_SIZE was defined as SZ_512, eight times the actual on-device size. header_log_copy() reads CXL_HEADERLOG_SIZE_U32 (128) dwords from the RAS capability iomap, overrunning the 88-byte mapping by 448 bytes. The cxl_aer_uncorrectable_error trace event memcpy()s CXL_HEADERLOG_SIZE (512) bytes from its source. For the CPER caller the source is struct cxl_ras_capability_regs::header_log[16] (64 bytes) embedded in a stack-local cxl_cper_prot_err_work_data, so the memcpy reads 448 bytes of kernel stack into the trace event ring buffer where userspace can read it via tracefs. Set CXL_HEADERLOG_SIZE to 64 and derive CXL_HEADERLOG_SIZE_U32 from it, bringing all iomap readers into agreement on 16 dwords. Userspace tools such as rasdaemon have grown a dependency on the buggy 512-byte (128 u32) header_log layout in the cxl_aer_uncorrectable_error trace event. Add CXL_HEADERLOG_TRACE_SIZE_U32 = 128 and use it for the trace event __array and its memcpy to preserve that ABI. Both callers now pass a zero-filled u32[CXL_HEADERLOG_TRACE_SIZE_U32] staging buffer with only the first CXL_HEADERLOG_SIZE_U32 (16) entries populated from hardware; the remaining 112 u32s are zero-padded, keeping the 512-byte trace ring buffer layout intact. [ dj: Replaced 64 with SZ_64 per RichardC ]
Title cxl: Fix CXL_HEADERLOG_SIZE to match RAS Capability size
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-08-28T06:49:06.277Z

Reserved: 2026-08-26T14:34:25.781Z

Link: CVE-2026-80662

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:51.397

Modified: 2026-08-28T08:16:51.397

Link: CVE-2026-80662

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T12:00:10Z

Weaknesses