{"id":41029,"date":"2026-10-19T00:31:52","date_gmt":"2026-10-18T16:31:52","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98557"},"modified":"2026-10-19T00:31:52","modified_gmt":"2026-10-18T16:31:52","slug":"cve-2026-98557","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98557","title":{"rendered":"CVE-2026-98557 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ngve: DQO: fix header"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>gve: DQO: fix header length used by gve_can_send_tso() for UDP GSO<\/p>\n<p>gve_can_send_tso() computes how many buffers each segment of a GSO<br \/>\npacket would span, and for this it needs the length of the headers<br \/>\nthat the device replicates in front of every segment.<\/p>\n<p>It unconditionally uses skb_tcp_all_headers(), which reads the doff<br \/>\nfield of the TCP header. SKB_GSO_UDP_L4 packets have no TCP header:<br \/>\ntcp_hdrlen() then reads one byte of the UDP payload, and header_len<br \/>\ncan be anything in [0, 60] instead of the transport offset plus the<br \/>\neight bytes of the UDP header that gve_prep_tso() programs into the<br \/>\nTSO context descriptor.<\/p>\n<p>A wrong header length shifts all the segment boundaries computed in<br \/>\nthe loop, so the number of buffers per segment can be over or under<br \/>\nestimated. In the first case, GSO is needlessly disabled for this<br \/>\npacket by gve_features_check_dqo() and the stack has to segment it.<br \/>\nIn the second case, the driver hands the device a packet whose<br \/>\nsegments span more than GVE_TX_MAX_DATA_DESCS buffers.<\/p>\n<p>Use the UDP header length for SKB_GSO_UDP_L4 packets, matching what<br \/>\ngve_prep_tso() does.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>gve: DQO: fix header length used by gve_can_send_tso() for UDP GSO<\/p>\n<p>gve_can_send_tso() computes how many buffers each segment of a <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41029","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41029","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=41029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}