{"id":41091,"date":"2026-10-19T00:32:06","date_gmt":"2026-10-18T16:32:06","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98619"},"modified":"2026-10-19T00:32:06","modified_gmt":"2026-10-18T16:32:06","slug":"cve-2026-98619","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98619","title":{"rendered":"CVE-2026-98619 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: ethtool: keep rt"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: ethtool: keep rtnl_lock for the ioctl self test<\/p>\n<p>An offline self test that brings the interface down and back up with<br \/>\nnetif_close() \/ netif_open() requires rtnl_lock for both. Since the<br \/>\nethtool IOCTL path became rtnl-optional for ops-locked drivers, the<br \/>\nETHTOOL_TEST ioctl runs holding only the netdev instance lock, so on an<br \/>\nops-locked driver the self test now tears the device down without<br \/>\nrtnl_lock.<\/p>\n<p>With lockdep this reproduces deterministically on every offline self<br \/>\ntest on such a driver; note the sole lock held is the instance lock, not<br \/>\nrtnl:<\/p>\n<p>  WARNING: suspicious RCU usage<br \/>\n  net\/core\/netpoll.c:207 suspicious rcu_dereference_protected() usage!<br \/>\n  1 lock held by ethtool\/107:<br \/>\n   #0: (&amp;dev-&gt;lock){+.+.}, at: dev_ethtool<br \/>\n  Call Trace:<br \/>\n   netpoll_poll_disable<br \/>\n   __dev_close_many<br \/>\n   netif_close_many<br \/>\n   netif_close<br \/>\n   fbnic_self_test<br \/>\n   dev_ethtool_locked<br \/>\n   dev_ethtool<br \/>\n   dev_ioctl<br \/>\n   sock_ioctl<br \/>\n   __x64_sys_ioctl<\/p>\n<p>Without lockdep the same condition trips ASSERT_RTNL() in<br \/>\n__dev_close_many() \/ __dev_open(); that check only samples the global<br \/>\nrtnl state, so it can be masked by a concurrent rtnl holder, but the<br \/>\ndevice is still being reconfigured without the lock it requires.<\/p>\n<p>The ethtool self_test is a legacy ioctl-only command, so an ETHTOOL_TEST<br \/>\ncase is only needed on the ioctl path. Add an opt-in bit for drivers whose<br \/>\nself test needs rtnl_lock and set it on the ops-locked drivers whose<br \/>\noffline self test tears the interface down and up:<\/p>\n<p>  &#8211; fbnic (ops-locked via queue_mgmt_ops): fbnic_self_test() offline path<br \/>\n    uses netif_close() \/ netif_open().<br \/>\n  &#8211; bnxt (ops-locked via queue_mgmt_ops): bnxt_self_test() offline path<br \/>\n    goes through bnxt_close_nic() \/ bnxt_half_open_nic() \/<br \/>\n    bnxt_half_close_nic() \/ bnxt_open_nic(), which close and reopen the<br \/>\n    device.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: ethtool: keep rtnl_lock for the ioctl self test<\/p>\n<p>An offline self test that brings the interface down and back up with<br \/>\nnetif_cl<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41091","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41091","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=41091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}