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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 2ddf51fcb6dd7d55ceef38e2e1a5ab2ab7fd47b0affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < fbab6b73cc086e32698c86e43d1b16bf17d24c36affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 28e382646417c7e2be9c9a7079eddf627ff52b90affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 667b6e52048eaf4dbcf1707ed87ffd44abb9cb38affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 28cb5d8d13b4c1faf3f688f62e5df82fe7b438d8affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 4fdb0f162ccdbe9626863b10003855703253fa29affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < b28596baf87e25a078789f1c05817c8a3bf71257affected45dac1d6ea045ae56e4df8d9c70c92c7412bd4fc to < 34a71f5361fc3adb5b7138da78750b0d535a8252affected
Linux Linux
Default version status: affected
4.2affected0 to < 4.2unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/2ddf51fcb6dd7d55ceef38e2e1a5ab2ab7fd47b0 ↗
- https://git.kernel.org/stable/c/fbab6b73cc086e32698c86e43d1b16bf17d24c36 ↗
- https://git.kernel.org/stable/c/28e382646417c7e2be9c9a7079eddf627ff52b90 ↗
- https://git.kernel.org/stable/c/667b6e52048eaf4dbcf1707ed87ffd44abb9cb38 ↗
- https://git.kernel.org/stable/c/28cb5d8d13b4c1faf3f688f62e5df82fe7b438d8 ↗
- https://git.kernel.org/stable/c/4fdb0f162ccdbe9626863b10003855703253fa29 ↗
- https://git.kernel.org/stable/c/b28596baf87e25a078789f1c05817c8a3bf71257 ↗
- https://git.kernel.org/stable/c/34a71f5361fc3adb5b7138da78750b0d535a8252 ↗