PT-2026-104945 · Azure Linux · Kernel

Publicado

2026-09-24

·

Atualizado

2026-09-24

Nenhuma

Não há classificações de severidade ou métricas disponíveis. Quando houver, atualizaremos as informações correspondentes na página.
In the Linux kernel, the following vulnerability has been resolved:
driver core: Avoid warning when removing a device while its supplier is unbinding
During driver removal, the following warning can appear: 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]
This warning is triggered when a consumer is removed because the links status of its supplier is not DL DEV DRIVER BOUND and the link flag DL FLAG SYNC STATE ONLY is not set.
The topology in terms of consumers/suppliers used was the following (consumer ---> supplier):
i2c -----------> OIC ----> PCI device | ^ | | +---> pinctrl ---+
When the PCI device is removed, the OIC (interrupt controller) has to be removed. In order to remove the OIC, pinctrl and i2c need to be removed and to remove pinctrl, i2c need to be removed. The removal order is:
  1. i2c
  2. pinctrl
  3. OIC
  4. PCI device
In details, the removal sequence is the following (with 0000:01:00.0 the PCI device): driver detach: call 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 call 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 call 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 call device release driver internal(i2c)... device links busy(i2c): links->status = DL DEV UNBINDING device links no driver(i2c)... pinctrl--i2c link->status is DL STATE SUPPLIER UNBIND oic--i2c link->status is DL STATE ACTIVE oic--i2c link->supplier->links.status is DL DEV UNBINDING
The warning is triggered by the i2c removal because the OIC (supplier) links status is not DL DEV DRIVER BOUND. Its links status is indeed set to DL DEV UNBINDING.
It is perfectly legit to have the links status set to DL DEV UNBINDING in that case. Indeed we had started to unbind the OIC which triggered the consumer unbinding and didn't finish yet when the i2c is unbound.
Avoid the warning when the supplier links status is set to DL DEV UNBINDING and thus support this removal sequence without any warnings.
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Identificadores relacionados

AZL-103847

Produtos afetados

Kernel