mirror of
https://github.com/torvalds/linux.git
synced 2026-09-20 19:01:02 +02:00
fbnic_tx_lso() calls skb_cow_head() which may reallocate the skb
including the shared info. We can't use the pointer calculated
before the call.
BUG: KASAN: slab-use-after-free in fbnic_tx_lso.isra.0+0x668/0x8e0
Read of size 4 at addr ff110000262edd98 by task swapper/5/0
Call Trace:
fbnic_tx_lso.isra.0+0x668/0x8e0
fbnic_xmit_frame+0x622/0xba0
dev_hard_start_xmit+0xf4/0x620
Allocated by task 8653:
__alloc_skb+0x11e/0x5f0
alloc_skb_with_frags+0xcc/0x6c0
sock_alloc_send_pskb+0x327/0x3f0
__ip_append_data+0x188b/0x47a0
ip_make_skb+0x24a/0x300
udp_sendmsg+0x14d2/0x21e0
Freed by task 0:
kfree+0x123/0x5a0
pskb_expand_head+0x36c/0xfa0
fbnic_tx_lso.isra.0+0x500/0x8e0
fbnic_xmit_frame+0x622/0xba0
dev_hard_start_xmit+0xf4/0x620
sch_direct_xmit+0x25b/0x1100
The buggy address belongs to the object at ff110000262edc40
which belongs to the cache skbuff_small_head of size 640
The buggy address is located 344 bytes inside of
freed 640-byte region [ff110000262edc40, ff110000262ede
Link: https://netdev.bots.linux.dev/logs/vmksft/fbnic-qemu-dbg/results/705762/15-uso-py/stderr
Fixes:
|
||
|---|---|---|
| .. | ||
| fbnic_csr.c | ||
| fbnic_csr.h | ||
| fbnic_debugfs.c | ||
| fbnic_devlink.c | ||
| fbnic_drvinfo.h | ||
| fbnic_ethtool.c | ||
| fbnic_fw_log.c | ||
| fbnic_fw_log.h | ||
| fbnic_fw.c | ||
| fbnic_fw.h | ||
| fbnic_hw_stats.c | ||
| fbnic_hw_stats.h | ||
| fbnic_hwmon.c | ||
| fbnic_irq.c | ||
| fbnic_mac.c | ||
| fbnic_mac.h | ||
| fbnic_mdio.c | ||
| fbnic_netdev.c | ||
| fbnic_netdev.h | ||
| fbnic_pci.c | ||
| fbnic_phylink.c | ||
| fbnic_rpc.c | ||
| fbnic_rpc.h | ||
| fbnic_time.c | ||
| fbnic_tlv.c | ||
| fbnic_tlv.h | ||
| fbnic_txrx.c | ||
| fbnic_txrx.h | ||
| fbnic.h | ||
| Makefile | ||