Message ID | 20240506135546.3641185-1-edumazet@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 9aad6e45c4e7d16b2bb7c3794154b828fb4384b4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] usb: aqc111: stop lying about skb->truesize | expand |
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 6 May 2024 13:55:46 +0000 you wrote: > 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 1e2c61172342 ("net: cdc_ncm: reduce skb truesize > in rx path") and 4ce62d5b2f7a ("net: usb: ax88179_178a: > stop lying about skb->truesize") > > [...] Here is the summary with links: - [net-next] usb: aqc111: stop lying about skb->truesize https://git.kernel.org/netdev/net-next/c/9aad6e45c4e7 You are awesome, thank you!
diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 7b8afa589a53c457ef07878f207ddbaafa668c54..284375f662f1e03b68f12752c76d6f1081a09d9a 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -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);
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 1e2c61172342 ("net: cdc_ncm: reduce skb truesize in rx path") and 4ce62d5b2f7a ("net: usb: ax88179_178a: stop lying about skb->truesize") Fixes: 361459cd9642 ("net: usb: aqc111: Implement RX data path") Signed-off-by: Eric Dumazet <edumazet@google.com> --- drivers/net/usb/aqc111.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)