Commit 9aad6e45 authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski

usb: aqc111: stop lying about skb->truesize

Some usb drivers try to set small skb->truesize and break
core networking stacks.

I replace one skb_clone() by an allocation of a fresh
and small skb, to get minimally sized skbs, like we did
in commit 1e2c6117 ("net: cdc_ncm: reduce skb truesize
in rx path") and 4ce62d5b ("net: usb: ax88179_178a:
stop lying about skb->truesize")

Fixes: 361459cd ("net: usb: aqc111: Implement RX data path")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20240506135546.3641185-1-edumazet@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent eb709b5f
......@@ -1141,17 +1141,15 @@ static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
continue;
}
/* Clone SKB */
new_skb = skb_clone(skb, GFP_ATOMIC);
new_skb = netdev_alloc_skb_ip_align(dev->net, pkt_len);
if (!new_skb)
goto err;
new_skb->len = pkt_len;
skb_put(new_skb, pkt_len);
memcpy(new_skb->data, skb->data, pkt_len);
skb_pull(new_skb, AQ_RX_HW_PAD);
skb_set_tail_pointer(new_skb, new_skb->len);
new_skb->truesize = SKB_TRUESIZE(new_skb->len);
if (aqc111_data->rx_checksum)
aqc111_rx_checksum(new_skb, pkt_desc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment