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:
- i2c
- pinctrl
- OIC
- 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
Produtos afetados
Kernel