Activity log
- Created & dismissed (max. allowed matches exceeded) suggestion
vmxnet3: fix BUG_ON in vmxnet3_get_hdr_len() for Geneve packets
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.
References
Affected products
- <667b6e52048eaf4dbcf1707ed87ffd44abb9cb38
- <34a71f5361fc3adb5b7138da78750b0d535a8252
- <4.2
- <b28596baf87e25a078789f1c05817c8a3bf71257
- <4fdb0f162ccdbe9626863b10003855703253fa29
- =<6.6.*
- =<*
- <28cb5d8d13b4c1faf3f688f62e5df82fe7b438d8
- ==4.2
- =<6.18.*
- =<6.12.*
- =<7.1.*