CVE-2023-52792

In the Linux kernel, the following vulnerability has been resolved: cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails Commit 5e42bcbc3fef ("cxl/region: decrement ->nr_targets on error in cxl_region_attach()") tried to avoid 'eiw' initialization errors when ->nr_targets exceeded 16, by just decrementing ->nr_targets when cxl_region_setup_targets() failed. Commit 86987c766276 ("cxl/region: Cleanup target list on attach error") extended that cleanup to also clear cxled->pos and p->targets[pos]. The initialization error was incidentally fixed separately by: Commit 8d4285425714 ("cxl/region: Fix port setup uninitialized variable warnings") which was merged a few days after 5e42bcbc3fef. But now the original cleanup when cxl_region_setup_targets() fails prevents endpoint and switch decoder resources from being reused: 1) the cleanup does not set the decoder's region to NULL, which results in future dpa_size_store() calls returning -EBUSY 2) the decoder is not properly freed, which results in future commit errors associated with the upstream switch Now that the initialization errors were fixed separately, the proper cleanup for this case is to just return immediately. Then the resources associated with this target get cleanup up as normal when the failed region is deleted. The ->nr_targets decrement in the error case also helped prevent a p->targets[] array overflow, so add a new check to prevent against that overflow. Tested by trying to create an invalid region for a 2 switch * 2 endpoint topology, and then following up with creating a valid region.
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

23 Sep 2025, 20:10

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
First Time Linux linux Kernel
Linux
CWE CWE-908
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/0718588c7aaa7a1510b4de972370535b61dddd0d - () https://git.kernel.org/stable/c/0718588c7aaa7a1510b4de972370535b61dddd0d - Patch
References () https://git.kernel.org/stable/c/07ffcd8ec79cf7383e1e45815f4842fd357991c2 - () https://git.kernel.org/stable/c/07ffcd8ec79cf7383e1e45815f4842fd357991c2 - Patch
References () https://git.kernel.org/stable/c/9090c5537c93cd0811ab7bfbd925b57addfffb60 - () https://git.kernel.org/stable/c/9090c5537c93cd0811ab7bfbd925b57addfffb60 - Patch
References () https://git.kernel.org/stable/c/90db4c1d5ebaf574d3c3065c055977982c378a83 - () https://git.kernel.org/stable/c/90db4c1d5ebaf574d3c3065c055977982c378a83 - Patch

21 Nov 2024, 08:40

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/0718588c7aaa7a1510b4de972370535b61dddd0d - () https://git.kernel.org/stable/c/0718588c7aaa7a1510b4de972370535b61dddd0d -
References () https://git.kernel.org/stable/c/07ffcd8ec79cf7383e1e45815f4842fd357991c2 - () https://git.kernel.org/stable/c/07ffcd8ec79cf7383e1e45815f4842fd357991c2 -
References () https://git.kernel.org/stable/c/9090c5537c93cd0811ab7bfbd925b57addfffb60 - () https://git.kernel.org/stable/c/9090c5537c93cd0811ab7bfbd925b57addfffb60 -
References () https://git.kernel.org/stable/c/90db4c1d5ebaf574d3c3065c055977982c378a83 - () https://git.kernel.org/stable/c/90db4c1d5ebaf574d3c3065c055977982c378a83 -
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: cxl/region: no intente realizar la limpieza después de que cxl_region_setup_targets() falle. Confirme 5e42bcbc3fef ("cxl/region: decrement ->nr_targets on error in cxl_region_attach()") intentó evitar ' Los mismos errores de inicialización cuando ->nr_targets excedieron 16, simplemente disminuyendo ->nr_targets cuando cxl_region_setup_targets() falló. La confirmación 86987c766276 ("cxl/region: Limpiar lista de objetivos al adjuntar error") extendió esa limpieza para borrar también cxled->pos y p->targets[pos]. El error de inicialización se solucionó por separado mediante: Commit 8d4285425714 ("cxl/region: Reparar advertencias de variables no inicializadas de configuración de puerto") que se fusionó unos días después de 5e42bcbc3fef. Pero ahora la limpieza original cuando falla cxl_region_setup_targets() impide que se reutilicen los recursos del decodificador de conmutador y punto final: 1) la limpieza no establece la región del decodificador en NULL, lo que da como resultado que futuras llamadas a dpa_size_store() devuelvan -EBUSY 2) el decodificador no liberado correctamente, lo que resulta en futuros errores de confirmación asociados con el conmutador ascendente. Ahora que los errores de inicialización se solucionaron por separado, la limpieza adecuada para este caso es simplemente regresar inmediatamente. Luego, los recursos asociados con este objetivo se limpian normalmente cuando se elimina la región fallida. La disminución de ->nr_targets en el caso de error también ayudó a evitar un desbordamiento de la matriz p->targets[], así que agregue una nueva verificación para evitar ese desbordamiento. Probado intentando crear una región no válida para una topología de 2 conmutadores * 2 puntos finales y luego creando una región válida.

21 May 2024, 16:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-21 16:15

Updated : 2025-09-23 20:10


NVD link : CVE-2023-52792

Mitre link : CVE-2023-52792

CVE.ORG link : CVE-2023-52792


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-908

Use of Uninitialized Resource