CVE-2022-49889

In the Linux kernel, the following vulnerability has been resolved: ring-buffer: Check for NULL cpu_buffer in ring_buffer_wake_waiters() 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
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

07 May 2025, 13:19

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/49ca992f6e50d0f46ec9608f44e011cf3121f389 - () https://git.kernel.org/stable/c/49ca992f6e50d0f46ec9608f44e011cf3121f389 - Patch
References () https://git.kernel.org/stable/c/7433632c9ff68a991bd0bc38cabf354e9d2de410 - () https://git.kernel.org/stable/c/7433632c9ff68a991bd0bc38cabf354e9d2de410 - Patch
References () https://git.kernel.org/stable/c/b5074df412bf3df9d6ce096b6fa03eb1082d05c9 - () https://git.kernel.org/stable/c/b5074df412bf3df9d6ce096b6fa03eb1082d05c9 - Patch
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CWE CWE-476
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
First Time Linux linux Kernel
Linux

02 May 2025, 13:52

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ring-buffer: Comprobar si hay un cpu_buffer nulo en ring_buffer_wake_waiters() En algunas máquinas, el número de CPU listadas puede ser mayor que el de CPU reales existentes. El subsistema de rastreo asigna un directorio per_cpu con acceso al búfer de anillo por CPU a través de un archivo cpuX. Pero para ahorrar espacio, el búfer de anillo solo asignará búferes para las CPU en línea, aunque la matriz de CPU será tan grande como nr_cpu_ids. Con la adición de despertar a los que esperan en el búfer de anillo al cerrar el archivo, ring_buffer_wake_waiters() ahora debe asegurarse de que el búfer esté asignado (con el irq_work asignado con él) antes de intentar despertar a los que esperan, ya que provocará una desreferencia de puntero nulo. Durante la depuración, añadí una comprobación de valores nulos para el propio búfer (lo cual es correcto), así como comprobaciones de punteros nulos contra buffer->buffers (lo cual no es correcto y generará una advertencia), además de asegurarme de que el número de CPU introducido esté dentro del nr_cpu_ids (lo cual tampoco es correcto si no lo está). Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=1204705

01 May 2025, 15:16

Type Values Removed Values Added
New CVE

Information

Published : 2025-05-01 15:16

Updated : 2025-05-07 13:19


NVD link : CVE-2022-49889

Mitre link : CVE-2022-49889

CVE.ORG link : CVE-2022-49889


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference