mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
wg_xmit() can be called concurrently, KCSAN reported [1]
some device stats updates can be lost.
Use DEV_STATS_INC() for this unlikely case.
[1]
BUG: KCSAN: data-race in wg_xmit / wg_xmit
read-write to 0xffff888104239160 of 8 bytes by task 1375 on cpu 0:
wg_xmit+0x60f/0x680 drivers/net/wireguard/device.c:231
__netdev_start_xmit include/linux/netdevice.h:4918 [inline]
netdev_start_xmit include/linux/netdevice.h:4932 [inline]
xmit_one net/core/dev.c:3543 [inline]
dev_hard_start_xmit+0x11b/0x3f0 net/core/dev.c:3559
...
read-write to 0xffff888104239160 of 8 bytes by task 1378 on cpu 1:
wg_xmit+0x60f/0x680 drivers/net/wireguard/device.c:231
__netdev_start_xmit include/linux/netdevice.h:4918 [inline]
netdev_start_xmit include/linux/netdevice.h:4932 [inline]
xmit_one net/core/dev.c:3543 [inline]
dev_hard_start_xmit+0x11b/0x3f0 net/core/dev.c:3559
...
v2: also change wg_packet_consume_data_done() (Hangbin Liu)
and wg_packet_purge_staged_packets()
Fixes:
|
||
|---|---|---|
| .. | ||
| selftest | ||
| allowedips.c | ||
| allowedips.h | ||
| cookie.c | ||
| cookie.h | ||
| device.c | ||
| device.h | ||
| main.c | ||
| Makefile | ||
| messages.h | ||
| netlink.c | ||
| netlink.h | ||
| noise.c | ||
| noise.h | ||
| peer.c | ||
| peer.h | ||
| peerlookup.c | ||
| peerlookup.h | ||
| queueing.c | ||
| queueing.h | ||
| ratelimiter.c | ||
| ratelimiter.h | ||
| receive.c | ||
| send.c | ||
| socket.c | ||
| socket.h | ||
| timers.c | ||
| timers.h | ||
| version.h | ||