CVE-2026-80917 in Linux
Сводка
по VulDB • 09.09.2026
В ядре Linux была устранена следующая уязвимость:
PCI: host-generic: исправлена ошибка разыменования нулевого указателя (NULL pointer dereference) на 32-битных системах CAM.
На 32-битных системах пространство конфигурации слишком велико для однократного отображения с помощью ioremap, поэтому функция pci_ecam_create() отображает каждый сегмент шины отдельно и полагается на обратный вызов ->add_bus (pci_ecam_add_bus) для заполнения отображений для каждой шины в cfg->winp[]. Затем pci_ecam_map_bus() использует это отображение как базу для каждого обращения к конфигурации.
Операции ECAM общего назначения (pci_generic_ecam_ops) уже предоставляют обратные вызовы ->add_bus и ->remove_bus, однако операции CAM (устаревшие), определенные в файле pci-host-generic.c, их не имеют. В результате на 32-битном хосте с использованием «pci-host-cam-generic» отображение для каждой шины никогда не устанавливается, и первое чтение конфигурации приводит к разыменованию нулевой базы, вызывая аварийное завершение работы (crash) во время перечисления шин:
Unable to handle kernel NULL pointer dereference at virtual address 00000800 Oops [#1]
CPU: 0 PID: 1 Comm: swapper Not tainted 6.9.7+ #43 Hardware name: Digilent Nexys-Video-A7 RV32 (DT) epc : pci_generic_config_read+0x40/0xb0 ra : pci_generic_config_read+0x2c/0xb0 [<c038db9c>] pci_generic_config_read+0x40/0xb0
[<c038da04>] pci_bus_read_config_dword+0x50/0xb0
[<c0391e94>] pci_bus_generic_read_dev_vendor_id+0x3c/0x1ec
[<c039245c>] pci_scan_single_device+0xa4/0x11c
[<c0392570>] pci_scan_slot+0x9c/0x23c
[<c039388c>] pci_scan_child_bus_extend+0x58/0x2f4
[<c0393db0>] pci_scan_root_bus_bridge+0x64/0xe8
[<c0393e54>] pci_host_probe+0x20/0xc8
[<c03bc6f4>] pci_host_common_probe+0x144/0x1e4
Исправление заключается в добавлении к операциям CAM тех же обратных вызовов ->add_bus и ->remove_bus. Поскольку функции pci_ecam_add_bus() и pci_ecam_remove_bus() являются статическими для файла ecam.c, определение операций CAM перемещено туда как pci_generic_cam_ops (в соответствии с паттерном pci_generic_ecam_ops) и экспортировано для использования в файле pci-host-generic.c.
[mani: удалена временная метка из журнала]
If you want to get best quality of vulnerability data, you may have to visit VulDB.