CVE-2026-23348 in Linuxinformazioni

Riassunto

di VulDB • 23/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

cxl: Correzione della race condition sull'oggetto nvdimm_bus durante la creazione degli oggetti nvdimm

Il problema è stato individuato durante l'esecuzione del test unitario cxl-translate.sh. L'inserimento di un sleep di 3 secondi immediatamente prima del test sembra far riprodurre il difetto in modo piuttosto consistente. Il modulo cxl_translate dipende da cxl_acpi e provoca la riprobing (reprobe) degli oggetti nvdimm orfani dopo che cxl_acpi è stato rimosso. L'oggetto nvdimm_bus viene registrato dall'oggetto cxl_nvb quando viene chiamata cxl_acpi_probe(). In assenza dell'oggetto nvdimm_bus, __nd_device_register() provocherà un dereferenziamento di puntatore NULL durante l'accesso a dev->parent che punta a &nvdimm_bus->dev.

[ 192.884510] BUG: kernel NULL pointer dereference, address: 000000000000006c
[ 192.895383] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20250812-19.fc42 08/12/2025
[ 192.897721] Workqueue: cxl_port cxl_bus_rescan_queue [cxl_core]
[ 192.899459] RIP: 0010:kobject_get+0xc/0x90
[ 192.924871] Call Trace:
[ 192.925959] <TASK>
[ 192.926976] ? pm_runtime_init+0xb9/0xe0
[ 192.929712] __nd_device_register.part.0+0x4d/0xc0 [libnvdimm]
[ 192.933314] __nvdimm_create+0x206/0x290 [libnvdimm]
[ 192.936662] cxl_nvdimm_probe+0x119/0x1d0 [cxl_pmem]
[ 192.940245] cxl_bus_probe+0x1a/0x60 [cxl_core]
[ 192.943349] really_probe+0xde/0x380

Questo patch si basa anche sulla modifica precedente in cui devm_cxl_add_nvdimm_bridge() viene chiamato da drivers/cxl/pmem.c invece che da drivers/cxl/core.c, per garantire la dipendenza di cxl_acpi su cxl_pmem.

1. Impostare probe_type di cxl_nvb a PROBE_FORCE_SYNCHRONOUS per assicurarsi che il driver venga probed in modo sincrono quando viene chiamata add_device(). 2. Aggiungere un controllo in __devm_cxl_add_nvdimm_bridge() per garantire che il driver cxl_nvb sia collegato durante cxl_acpi_probe(). 3. Acquisire il lock di cxl_root uport_dev e il lock di cxl_nvb->dev in devm_cxl_add_nvdimm() prima di verificare se nvdimm_bus è valido. 4. Impostare il flag cxl_nvdimm a CXL_NVD_F_INVALIDATED affinché cxl_nvdimm_probe() esca con -EBUSY.

La rimozione dei dispositivi cxl_nvdimm dovrebbe impedire la probing di eventuali dispositivi orfani una volta che nvdimm_bus non è più presente.

[ dj: Risolto problema kdoc segnalato da

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsabile

Linux

Prenotare

13/01/2026

Divulgazione

25/03/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00088

KEV

no

Attività

molto basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!