{"id":41034,"date":"2026-10-19T00:31:53","date_gmt":"2026-10-18T16:31:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98562"},"modified":"2026-10-19T00:31:53","modified_gmt":"2026-10-18T16:31:53","slug":"cve-2026-98562","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98562","title":{"rendered":"CVE-2026-98562 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: libwx: fix races"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: libwx: fix races in Tx timestamp handling<\/p>\n<p>wx-&gt;ptp_tx_skb is shared between the Tx path, the PTP auxiliary<br \/>\nworker and the timestamp cleanup paths. The<br \/>\nWX_STATE_PTP_TX_IN_PROGRESS bit prevents multiple Tx paths from<br \/>\nsubmitting timestamp requests, but does not serialize the worker<br \/>\nagainst cleanup.<\/p>\n<p>As a result, wx_ptp_clear_tx_timestamp() can free an skb after<br \/>\nwx_ptp_tx_hwtstamp_work() has obtained its pointer. The worker may<br \/>\nthen pass the freed skb to skb_tstamp_tx() and release the same<br \/>\nreference again.<\/p>\n<p>The cleanup path may also clear the in-progress bit while the worker<br \/>\nis still processing the old skb. This allows the Tx path to publish a<br \/>\nnew skb which the worker can subsequently overwrite with NULL,<br \/>\nleaking its reference.<\/p>\n<p>Add a dedicated spinlock to protect publication and consumption of<br \/>\nthe Tx timestamp skb. Detach the skb and clear the in-progress bit<br \/>\nwhile holding the lock, then deliver the timestamp and release the skb<br \/>\nafter dropping it. Use the same locked cleanup in the quiesce path,<br \/>\nbut keep the detach there free of register accesses: quiesce runs<br \/>\nduring PCIe error recovery, where MMIO is not reliable, and it<br \/>\ndeliberately did not touch the device before. The lock is taken with<br \/>\ninterrupts disabled, because netpoll can call ndo_start_xmit() with<br \/>\nhard interrupts already off.<\/p>\n<p>When handling a Tx DMA mapping failure, keep the transmit path<br \/>\nreference until after comparing the skb under the lock. This prevents<br \/>\nskb address reuse from making the error path mistake a newer timestamp<br \/>\nrequest for the failed one.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: libwx: fix races in Tx timestamp handling<\/p>\n<p>wx-&gt;ptp_tx_skb is shared between the Tx path, the PTP auxiliary<br \/>\nworker and the time<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41034","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41034","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=41034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}