CVE-2026-31541

In the Linux kernel, the following vulnerability has been resolved: tracing: Fix trace_marker copy link list updates When the "copy_trace_marker" option is enabled for an instance, anything written into /sys/kernel/tracing/trace_marker is also copied into that instances buffer. When the option is set, that instance's trace_array descriptor is added to the marker_copies link list. This list is protected by RCU, as all iterations uses an RCU protected list traversal. When the instance is deleted, all the flags that were enabled are cleared. This also clears the copy_trace_marker flag and removes the trace_array descriptor from the list. The issue is after the flags are called, a direct call to update_marker_trace() is performed to clear the flag. This function returns true if the state of the flag changed and false otherwise. If it returns true here, synchronize_rcu() is called to make sure all readers see that its removed from the list. But since the flag was already cleared, the state does not change and the synchronization is never called, leaving a possible UAF bug. Move the clearing of all flags below the updating of the copy_trace_marker option which then makes sure the synchronization is performed. Also use the flag for checking the state in update_marker_trace() instead of looking at if the list is empty.
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:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: tracing: Solución a las actualizaciones de la lista enlazada de copia de trace_marker Cuando la opción ’copy_trace_marker’ está habilitada para una instancia, cualquier cosa escrita en /sys/kernel/tracing/trace_marker también se copia en el búfer de esa instancia. Cuando la opción está configurada, el descriptor trace_array de esa instancia se añade a la lista enlazada marker_copies. Esta lista está protegida por RCU, ya que todas las iteraciones utilizan un recorrido de lista protegido por RCU. Cuando la instancia es eliminada, todas las banderas que estaban habilitadas se borran. Esto también borra la bandera copy_trace_marker y elimina el descriptor trace_array de la lista. El problema es que después de que se llaman las banderas, se realiza una llamada directa a update_marker_trace() para borrar la bandera. Esta función devuelve verdadero si el estado de la bandera cambió y falso en caso contrario. Si devuelve verdadero aquí, se llama a synchronize_rcu() para asegurarse de que todos los lectores vean que se ha eliminado de la lista. Pero como la bandera ya estaba borrada, el estado no cambia y la sincronización nunca se llama, dejando un posible error UAF. Mover el borrado de todas las banderas debajo de la actualización de la opción copy_trace_marker, lo que luego asegura que se realice la sincronización. También usar la bandera para verificar el estado en update_marker_trace() en lugar de mirar si la lista está vacía.

Information

Published : 2026-04-24 15:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31541

Mitre link : CVE-2026-31541

CVE.ORG link : CVE-2026-31541


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free