CVE-2026-97479 in Linuxinformación

Resumen

por VulDB • 2026-09-24

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

driver core: Evitar advertencia al eliminar un dispositivo mientras su proveedor está en proceso de desvinculación (unbinding)

Durante la eliminación del controlador (driver), puede aparecer la siguiente advertencia: WARNING: CPU: 1 PID: 139 at drivers/base/core.c:1497 __device_links_no_driver+0xcc/0xfc ... Call trace: __device_links_no_driver+0xcc/0xfc (P) device_links_driver_cleanup+0xa8/0xf0 device_release_driver_internal+0x208/0x23c device_links_unbind_consumers+0xe0/0x108 device_release_driver_internal+0xec/0x23c device_links_unbind_consumers+0xe0/0x108 device_release_driver_internal+0xec/0x23c device_links_unbind_consumers+0xe0/0x108 device_release_driver_internal+0xec/0x23c driver_detach+0xa0/0x12c bus_remove_driver+0x6c/0xbc driver_unregister+0x30/0x60 pci_unregister_driver+0x20/0x9c lan966x_pci_driver_exit+0x18/0xa90 [lan966x_pci]

Esta advertencia se activa cuando un consumidor es eliminado porque el estado de los enlaces (links) de su proveedor no es DL_DEV_DRIVER_BOUND y la bandera del enlace DL_FLAG_SYNC_STATE_ONLY no está establecida.

La topología en términos de consumidores/proveedores utilizada fue la siguiente (consumidor ---> proveedor):

i2c -----------> OIC ----> dispositivo PCI | ^ | | +---> pinctrl ---+

Cuando se elimina el dispositivo PCI, es necesario eliminar el OIC (controlador de interrupciones). Para eliminar el OIC, deben eliminarse pinctrl e i2c; y para eliminar pinctrl, debe eliminarse i2c. El orden de eliminación es: 1) i2c 2) pinctrl 3) OIC 4) dispositivo PCI

En detalle, la secuencia de eliminación es la siguiente (donde 0000:01:00.0 es el dispositivo PCI): driver_detach: llama a device_release_driver_internal(0000:01:00.0)... device_links_busy(0000:01:00.0): links->status = DL_DEV_UNBINDING device_links_unbind_consumers(0000:01:00.0): 0000:01:00.0--oic link->status = DL_STATE_SUPPLIER_UNBIND llama a device_release_driver_internal(oic)... device_links_busy(oic): links->status = DL_DEV_UNBINDING device_links_unbind_consumers(oic): oic--pinctrl link->status = DL_STATE_SUPPLIER_UNBIND llama a device_release_driver_internal(pinctrl)... device_links_busy(pinctrl): links->status = DL_DEV_UNBINDING device_links_unbind_consumers(pinctrl): pinctrl--i2c link->status = DL_STATE_SUPPLIER_UNBIND llama a device_release_driver_internal(i2c)... device_links_busy(i2c): links->status = DL_DEV_UNBINDING __device_links_no_driver(i2c)... El estado del enlace pinctrl--i2c es DL_STATE_SUPPLIER_UNBIND El estado del enlace oic--i2c es DL_STATE_ACTIVE El estado de los enlaces (links.status) de supplier en oic--i2c es DL_DEV_UNBINDING

La advertencia se activa por la eliminación de i2c porque el estado de los enlaces del proveedor OIC no es DL_DEV_DRIVER_BOUND. De hecho, su estado de enlace está establecido como DL_DEV_UNBINDING.

Es perfectamente legítimo tener el estado de los enlaces establecido en DL_DEV_UNBINDING en este caso. De hecho, habíamos comenzado a desvincular (unbind) el OIC, lo que activó la desvinculación del consumidor y aún no había terminado cuando se desvincula i2c.

Evite la advertencia cuando el estado de los enlaces del proveedor esté establecido como DL_DEV_UNBINDING y, por tanto, admita esta secuencia de eliminación sin ninguna advertencia.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-09-24

Divulgación

2026-09-24

Moderación

aceptado

Artículo

VDB-409635

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!