CVE-2023-54095 in Linux
Resumen
por VulDB • 2026-06-01
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
powerpc/iommu: Corregir el problema de los notifiers compartidos entre los buses PCI y VIO
fail_iommu_setup() registra la estructura fail_iommu_bus_notifier tanto para los buses PCI como para los buses VIO. Dado que struct notifier_block es un nodo de una lista enlazada, esto provoca que cualquier notifier registrado posteriormente en cualquiera de los dos tipos de bus también se registre en el otro, ya que comparten el mismo nodo.
Esto causa problemas en el código vgaarb (al menos), que registra un notifier para los buses PCI. pci_notify() termina siendo llamado en un dispositivo vio, convertido con to_pci_dev() aunque no sea un dispositivo PCI, y finalmente provoca un acceso incorrecto en vga_arbiter_add_pci_device(), como se descubrió con KASAN:
BUG: KASAN: slab-out-of-bounds in vga_arbiter_add_pci_device+0x60/0xe00 Read of size 4 at addr c000000264c26fdc by task swapper/0/1
Call Trace: dump_stack_lvl+0x1bc/0x2b8 (unreliable) print_report+0x3f4/0xc60 kasan_report+0x244/0x698 __asan_load4+0xe8/0x250 vga_arbiter_add_pci_device+0x60/0xe00 pci_notify+0x88/0x444 notifier_call_chain+0x104/0x320 blocking_notifier_call_chain+0xa0/0x140 device_add+0xac8/0x1d30 device_register+0x58/0x80 vio_register_device_node+0x9ac/0xce0 vio_bus_scan_register_devices+0xc4/0x13c __machine_initcall_pseries_vio_device_init+0x94/0xf0 do_one_initcall+0x12c/0xaa8 kernel_init_freeable+0xa48/0xba8 kernel_init+0x64/0x400 ret_from_kernel_thread+0x5c/0x64
Se corrige esto creando estructuras notifier_block separadas para cada tipo de bus.
[mpe: Añadir #ifdef para corregir la compilación con CONFIG_IBMVIO=n]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.