CVE-2025-39870

In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: Fix double free in idxd_setup_wqs() The clean up in idxd_setup_wqs() has had a couple bugs because the error handling is a bit subtle. It's simpler to just re-write it in a cleaner way. The issues here are: 1) If "idxd->max_wqs" is <= 0 then we call put_device(conf_dev) when "conf_dev" hasn't been initialized. 2) If kzalloc_node() fails then again "conf_dev" is invalid. It's either uninitialized or it points to the "conf_dev" from the previous iteration so it leads to a double free. It's better to free partial loop iterations within the loop and then the unwinding at the end can handle whole loop iterations. I also renamed the labels to describe what the goto does and not where the goto was located.
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:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.15:rc7:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.17:rc5:*:*:*:*:*:*

Configuration 2 (hide)

cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:*

History

19 Oct 2026, 21:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: dmaengine: idxd: Corrección de doble liberación en idxd_setup_wqs() La limpieza en idxd_setup_wqs() ha tenido un par de errores porque el manejo de errores es un poco sutil. Es más simple simplemente reescribirlo de una manera más limpia. Los problemas aquí son: 1) Si 'idxd->max_wqs' es menor o igual que 0, entonces llamamos a put_device(conf_dev) cuando 'conf_dev' no ha sido inicializado. 2) Si kzalloc_node() falla, entonces nuevamente 'conf_dev' es inválido. Está sin inicializar o apunta al 'conf_dev' de la iteración anterior, lo que lleva a una doble liberación. Es mejor liberar iteraciones parciales del bucle dentro del bucle y luego el desenrollado al final puede manejar iteraciones completas del bucle. También renombré las etiquetas para describir lo que hace el goto y no dónde estaba ubicado el goto.

Information

Published : 2025-09-23 06:15

Updated : 2026-10-19 21:10


NVD link : CVE-2025-39870

Mitre link : CVE-2025-39870

CVE.ORG link : CVE-2025-39870


JSON object : View

Products Affected

debian

  • debian_linux

linux

  • linux_kernel
CWE
CWE-415

Double Free