{"id":41021,"date":"2026-10-19T00:31:51","date_gmt":"2026-10-18T16:31:51","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98549"},"modified":"2026-10-19T00:31:51","modified_gmt":"2026-10-18T16:31:51","slug":"cve-2026-98549","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98549","title":{"rendered":"CVE-2026-98549 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: prevent collapsi"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tcp: prevent collapsing skbs across boundary in rtx queue<\/p>\n<p>tcp_write_collapse_fence() sets TCP_SKB_CB(skb)-&gt;eor = 1 on<br \/>\ntcp_write_queue_tail(sk) to prevent skbs queued after a switch to<br \/>\ndevice encryption from being collapsed into earlier skbs.<\/p>\n<p>The fence is a no-op if all earlier data has already been transmitted<br \/>\nwhen the switch happens: sk-&gt;sk_write_queue is empty. The not yet<br \/>\nacknowledged earlier skbs wait in sk-&gt;tcp_rtx_queue with eor 0.<\/p>\n<p>On a subsequent retransmit or SACK shift, tcp_retrans_try_collapse() or<br \/>\ntcp_shift_skb_data() can then merge an skb queued after the switch into<br \/>\none queued before it.<\/p>\n<p>Both users of the fence are affected:<\/p>\n<p>&#8211; psp: devices only encrypt skbs with skb-&gt;decrypted set. The merged skb<br \/>\n  keeps decrypted = 0 from the earlier skb, so merged data sent after<br \/>\n  psp_sock_assoc_set_tx() is retransmitted in cleartext.<\/p>\n<p>&#8211; tls device offload: the merged skb straddles the start marker set in<br \/>\n  tls_set_device_offload(). The software fallback (fill_sg_in() returns<br \/>\n  -EINVAL) and the mlx5, nfp and funeth drivers cannot handle such an<br \/>\n  skb and drop it. Every retransmit rebuilds the same skb, so the<br \/>\n  connection stalls.<\/p>\n<p>Fix this in two places, for defense in depth:<\/p>\n<p>1. Fall back to tcp_rtx_queue_tail(sk) in tcp_write_collapse_fence()<br \/>\n   when tcp_write_queue_tail(sk) is NULL.<\/p>\n<p>2. Check !skb_cmp_decrypted(to, from) in tcp_skb_can_collapse(), as<br \/>\n   tcp_skb_can_collapse_rx() does on receive. skb_shift(), which both<br \/>\n   collapse paths call, already has a DEBUG_NET_WARN_ON_ONCE() for this<br \/>\n   condition.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tcp: prevent collapsing skbs across boundary in rtx queue<\/p>\n<p>tcp_write_collapse_fence() sets TCP_SKB_CB(skb)-&gt;eor = 1 on<br \/>\ntcp_write_qu<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41021","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41021","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=41021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}