CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's vmxnet3 driver, specifically in the handling of Geneve-encapsulated packets, where the function vmxnet3_get_hdr_len() incorrectly assumes the outer header is always present. This can lead to critical errors, including system crashes, when the outer protocol differs from the expected TCP, or when there is a mismatch between outer and inner IP versions. Organizations using Linux systems with vmxnet3 for network virtualization should prioritize addressing this issue to prevent potential disruptions in network operations.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets vmxnet3_get_hdr_len() assumes gdesc->rcd.v4/v6/tcp always describe the outer header, but for a Geneve-encapsulated packet the device can set them based on the inner header instead, signalled by the VMXNET3_RCD_HDR_INNER_SHIFT bit in the completion descriptor. Since the function never skips the outer encapsulation, this mismatch triggers: - BUG_ON(hdr.ipv4->protocol != IPPROTO_TCP), because the outer protocol is UDP (Geneve), not TCP. - BUG_ON(hdr.eth->h_proto != ...), when the tunnel's outer and inner IP versions differ (e.g. outer IPv6/inner IPv4 or vice versa). Check VMXNET3_RCD_HDR_INNER_SHIFT up front and bail out, since the function cannot locate the inner header it would need to parse. Also convert the remaining BUG_ON()s in this function to return 0 defensively.