net: usb: smsc95xx: stop lying about skb->truesize
authorEric Dumazet <edumazet@google.com>
Thu, 9 May 2024 08:33:13 +0000 (08:33 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 May 2024 02:22:53 +0000 (19:22 -0700)
commitd50729f1d60bca822ef6d9c1a5fb28d486bd7593
tree16b46b615df3adfc718cdd442a0cd142dd31ec4c
parent089507a67921b400b68c25edbeaf76a6eae8b00a
net: usb: smsc95xx: stop lying about skb->truesize

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

In this patch, I removed one of the skb->truesize override.

I also replaced 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")

v3: also fix a sparse error ( https://lore.kernel.org/oe-kbuild-all/202405091310.KvncIecx-lkp@intel.com/ )
v2: leave the skb_trim() game because smsc95xx_rx_csum_offload()
    needs the csum part. (Jakub)
    While we are it, use get_unaligned() in smsc95xx_rx_csum_offload().

Fixes: 2f7ca802bdae ("net: Add SMSC LAN9500 USB2.0 10/100 ethernet adapter driver")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Steve Glendinning <steve.glendinning@shawell.net>
Cc: UNGLinuxDriver@microchip.com
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240509083313.2113832-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/smsc95xx.c