CVE-2026-97479 in Linuxinformação

Sumário

de VulDB • 24/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

driver core: Evitar aviso ao remover um dispositivo enquanto seu fornecedor está sendo desvinculado (unbinding)

Durante a remoção do driver, o seguinte aviso pode aparecer: 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]

Este aviso é acionado quando um consumidor é removido porque o status do link de seu fornecedor não é DL_DEV_DRIVER_BOUND e a flag do link DL_FLAG_SYNC_STATE_ONLY não está definida.

A topologia em termos de consumidores/fornecedores utilizada foi a seguinte (consumidor ---> fornecedor):

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

Quando o dispositivo PCI é removido, o OIC (controlador de interrupções) precisa ser removido. Para remover o OIC, pinctrl e i2c precisam ser removidos; para remover o pinctrl, o i2c precisa ser removido. A ordem de remoção é: 1) i2c 2) pinctrl 3) OIC 4) PCI device

Em detalhes, a sequência de remoção é a seguinte (com 0000:01:00.0 sendo o dispositivo PCI): driver_detach: chama 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 chama 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 chama 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 chama device_release_driver_internal(i2c)... device_links_busy(i2c): links->status = DL_DEV_UNBINDING __device_links_no_driver(i2c)... pinctrl--i2c link->status é DL_STATE_SUPPLIER_UNBIND oic--i2c link->status é DL_STATE_ACTIVE oic--i2c link->supplier->links.status é DL_DEV_UNBINDING

O aviso é acionado pela remoção do i2c porque o status dos links do OIC (fornecedor) não é DL_DEV_DRIVER_BOUND. Seu status de link está, na verdade, definido como DL_DEV_UNBINDING.

É perfeitamente legítimo ter o status dos links definido como DL_DEV_UNBINDING nesse caso. De fato, iniciamos a desvinculação (unbinding) do OIC, o que acionou a desvinculação do consumidor e ainda não foi concluído quando o i2c é desvinculado.

Evite o aviso quando o status dos links do fornecedor estiver definido como DL_DEV_UNBINDING, suportando assim esta sequência de remoção sem nenhum aviso.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsável

Linux

Reservar

24/09/2026

Divulgação

24/09/2026

Moderação

aceite

Entrada

VDB-409635

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!