Back

MEDIUM

ring-buffer: Check for NULL cpu_buffer in ring_buffer_wake_waiters()

Published May 1, 2025

Description

On some machines the number of listed CPUs may be bigger than the actual CPUs that exist. The tracing subsystem allocates a per_cpu directory with access to the per CPU ring buffer via a cpuX file. But to save space, the ring buffer will only allocate buffers for online CPUs, even though the CPU array will be as big as the nr_cpu_ids.

With the addition of waking waiters on the ring buffer when closing the file, the ring_buffer_wake_waiters() now needs to make sure that the buffer is allocated (with the irq_work allocated with it) before trying to wake waiters, as it will cause a NULL pointer dereference.

While debugging this, I added a NULL check for the buffer itself (which is OK to do), and also NULL pointer checks against buffer->buffers (which is not fine, and will WARN) as well as making sure the CPU number passed in is within the nr_cpu_ids (which is also not fine if it isn't).

Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1204705

Affected products

Remediation

No remediation recorded yet.

References (9)

Change history (0)

No recorded changes yet.

Sources

CVE.org / MITRE

Status PUBLISHED
Assigner Linux
Published May 1, 2025
Updated May 23, 2026
Reserved May 1, 2025

CISA Vulnrichment

Updated Oct 1, 2025

NVD

Status Modified
Modified Jun 17, 2026

Red Hat

Severity Low
Public date May 1, 2025
Bugzilla 2363445

ENISA EUVD

Assigner Linux
Published May 1, 2025
Updated May 23, 2026

GitHub

No data