CVE-2026-23348 in Linux
Сводка
по VulDB • 23.06.2026
В ядре Linux устранена следующая уязвимость:
cxl: Исправлена гонка данных (race condition) объекта nvdimm_bus при создании объектов nvdimm.
Проблема была обнаружена во время выполнения модульного теста cxl-translate.sh. Добавление задержки sleep длительностью 3 секунды непосредственно перед тестом позволяет воспроизвести проблему достаточно стабильно. Модуль cxl_translate зависит от cxl_acpi и приводит к повторной проверке (reprobe) сиротских объектов nvdimm после удаления модуля cxl_acpi. Объект nvdimm_bus регистрируется объектом cxl_nvb при вызове функции cxl_acpi_probe(). При отсутствии объекта nvdimm_bus функция __nd_device_register() вызывает разыменование нулевого указателя (NULL pointer dereference) при обращении к dev->parent, который указывает на &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
Этот патч также опирается на предыдущее изменение, в котором функция devm_cxl_add_nvdimm_bridge() вызывается из drivers/cxl/pmem.c вместо drivers/cxl/core.c для обеспечения зависимости cxl_acpi от cxl_pmem.
1. Установить probe_type cxl_nvb равным PROBE_FORCE_SYNCHRONOUS, чтобы гарантировать синхронную проверку драйвера при вызове add_device(). 2. Добавить проверку в __devm_cxl_add_nvdimm_bridge() для обеспечения того, что драйвер cxl_nvb прикреплен во время выполнения cxl_acpi_probe(). 3. Взять блокировку uport_dev корня cxl и блокировку dev->cxlnvb в функции devm_cxl_add_nvdimm() перед проверкой корректности nvdimm_bus. 4. Установить флаг cxl_nvdimm равным CXL_NVD_F_INVALIDATED, чтобы функция cxl_nvdimm_probe() завершалась с кодом ошибки -EBUSY.
Удаление устройств cxl_nvdimm должно предотвратить проверку (probing) любых сиротских устройств после исчезновения nvdimm_bus.
[ dj: Исправлена проблема kdoc, сообщ
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.