ipvlan: use skb_ip_totlen in ipvlan_get_L3_hdr
authorXin Long <lucien.xin@gmail.com>
Sat, 28 Jan 2023 15:58:36 +0000 (10:58 -0500)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Feb 2023 04:54:27 +0000 (20:54 -0800)
ipvlan devices calls netif_inherit_tso_max() to get the tso_max_size/segs
from the lower device, so when lower device supports BIG TCP, the ipvlan
devices support it too. We also should consider its iph tot_len accessing.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ipvlan/ipvlan_core.c

index bb1c298..460b3d4 100644 (file)
@@ -157,7 +157,7 @@ void *ipvlan_get_L3_hdr(struct ipvl_port *port, struct sk_buff *skb, int *type)
                        return NULL;
 
                ip4h = ip_hdr(skb);
-               pktlen = ntohs(ip4h->tot_len);
+               pktlen = skb_ip_totlen(skb);
                if (ip4h->ihl < 5 || ip4h->version != 4)
                        return NULL;
                if (skb->len < pktlen || pktlen < (ip4h->ihl * 4))