usb: aqc111: check packet for fixup for true limit
[platform/kernel/linux-starfive.git] / drivers / net / usb / aqc111.c
index a017e9d..7b8afa5 100644 (file)
@@ -1079,17 +1079,17 @@ static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
        u16 pkt_count = 0;
        u64 desc_hdr = 0;
        u16 vlan_tag = 0;
-       u32 skb_len = 0;
+       u32 skb_len;
 
        if (!skb)
                goto err;
 
-       if (skb->len == 0)
+       skb_len = skb->len;
+       if (skb_len < sizeof(desc_hdr))
                goto err;
 
-       skb_len = skb->len;
        /* RX Descriptor Header */
-       skb_trim(skb, skb->len - sizeof(desc_hdr));
+       skb_trim(skb, skb_len - sizeof(desc_hdr));
        desc_hdr = le64_to_cpup((u64 *)skb_tail_pointer(skb));
 
        /* Check these packets */