{"id":28711,"date":"2026-09-25T04:31:37","date_gmt":"2026-09-24T20:31:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97479"},"modified":"2026-09-25T04:31:37","modified_gmt":"2026-09-24T20:31:37","slug":"cve-2026-97479","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97479","title":{"rendered":"CVE-2026-97479 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndriver core: Avoid wa"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>driver core: Avoid warning when removing a device while its supplier is unbinding<\/p>\n<p>During driver removal, the following warning can appear:<br \/>\n   WARNING: CPU: 1 PID: 139 at drivers\/base\/core.c:1497 __device_links_no_driver+0xcc\/0xfc<br \/>\n   &#8230;<br \/>\n   Call trace:<br \/>\n     __device_links_no_driver+0xcc\/0xfc (P)<br \/>\n     device_links_driver_cleanup+0xa8\/0xf0<br \/>\n     device_release_driver_internal+0x208\/0x23c<br \/>\n     device_links_unbind_consumers+0xe0\/0x108<br \/>\n     device_release_driver_internal+0xec\/0x23c<br \/>\n     device_links_unbind_consumers+0xe0\/0x108<br \/>\n     device_release_driver_internal+0xec\/0x23c<br \/>\n     device_links_unbind_consumers+0xe0\/0x108<br \/>\n     device_release_driver_internal+0xec\/0x23c<br \/>\n     driver_detach+0xa0\/0x12c<br \/>\n     bus_remove_driver+0x6c\/0xbc<br \/>\n     driver_unregister+0x30\/0x60<br \/>\n     pci_unregister_driver+0x20\/0x9c<br \/>\n     lan966x_pci_driver_exit+0x18\/0xa90 [lan966x_pci]<\/p>\n<p>This warning is triggered when a consumer is removed because the links<br \/>\nstatus of its supplier is not DL_DEV_DRIVER_BOUND and the link flag<br \/>\nDL_FLAG_SYNC_STATE_ONLY is not set.<\/p>\n<p>The topology in terms of consumers\/suppliers used was the following<br \/>\n(consumer &#8212;&gt; supplier):<\/p>\n<p>      i2c &#8212;&#8212;&#8212;&#8211;&gt; OIC &#8212;-&gt; PCI device<br \/>\n       |                ^<br \/>\n       |                |<br \/>\n       +&#8212;&gt; pinctrl &#8212;+<\/p>\n<p>When the PCI device is removed, the OIC (interrupt controller) has to be<br \/>\nremoved. In order to remove the OIC, pinctrl and i2c need to be removed<br \/>\nand to remove pinctrl, i2c need to be removed. The removal order is:<br \/>\n  1) i2c<br \/>\n  2) pinctrl<br \/>\n  3) OIC<br \/>\n  4) PCI device<\/p>\n<p>In details, the removal sequence is the following (with 0000:01:00.0 the<br \/>\nPCI device):<br \/>\n  driver_detach: call device_release_driver_internal(0000:01:00.0)&#8230;<br \/>\n    device_links_busy(0000:01:00.0):<br \/>\n      links-&gt;status = DL_DEV_UNBINDING<br \/>\n    device_links_unbind_consumers(0000:01:00.0):<br \/>\n      0000:01:00.0&#8211;oic link-&gt;status = DL_STATE_SUPPLIER_UNBIND<br \/>\n      call device_release_driver_internal(oic)&#8230;<br \/>\n        device_links_busy(oic):<br \/>\n          links-&gt;status = DL_DEV_UNBINDING<br \/>\n        device_links_unbind_consumers(oic):<br \/>\n          oic&#8211;pinctrl link-&gt;status = DL_STATE_SUPPLIER_UNBIND<br \/>\n          call device_release_driver_internal(pinctrl)&#8230;<br \/>\n            device_links_busy(pinctrl):<br \/>\n              links-&gt;status = DL_DEV_UNBINDING<br \/>\n            device_links_unbind_consumers(pinctrl):<br \/>\n              pinctrl&#8211;i2c link-&gt;status = DL_STATE_SUPPLIER_UNBIND<br \/>\n              call device_release_driver_internal(i2c)&#8230;<br \/>\n                device_links_busy(i2c): links-&gt;status = DL_DEV_UNBINDING<br \/>\n                __device_links_no_driver(i2c)&#8230;<br \/>\n                  pinctrl&#8211;i2c link-&gt;status is DL_STATE_SUPPLIER_UNBIND<br \/>\n                  oic&#8211;i2c link-&gt;status is DL_STATE_ACTIVE<br \/>\n                  oic&#8211;i2c link-&gt;supplier-&gt;links.status is DL_DEV_UNBINDING<\/p>\n<p>The warning is triggered by the i2c removal because the OIC (supplier)<br \/>\nlinks status is not DL_DEV_DRIVER_BOUND. Its links status is indeed set<br \/>\nto DL_DEV_UNBINDING.<\/p>\n<p>It is perfectly legit to have the links status set to DL_DEV_UNBINDING<br \/>\nin that case. Indeed we had started to unbind the OIC which triggered<br \/>\nthe consumer unbinding and didn&#8217;t finish yet when the i2c is unbound.<\/p>\n<p>Avoid the warning when the supplier links status is set to<br \/>\nDL_DEV_UNBINDING and thus support this removal sequence without any<br \/>\nwarnings.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>driver core: Avoid warning when removing a device while its supplier is unbinding<\/p>\n<p>During driver removal, the following warning can<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28711","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}