Eric Dumazet
7c422d0ce9
net: add READ_ONCE() annotation in __skb_wait_for_more_packets()
__skb_wait_for_more_packets() can be called while other cpus
can feed packets to the socket receive queue.
KCSAN reported :
BUG: KCSAN: data-race in __skb_wait_for_more_packets / __udp_enqueue_schedule_skb
write to 0xffff888102e40b58 of 8 bytes by interrupt on cpu 0:
__skb_insert include/linux/skbuff.h:1852 [inline]
__skb_queue_before include/linux/skbuff.h:1958 [inline]
__skb_queue_tail include/linux/skbuff.h:1991 [inline]
__udp_enqueue_schedule_skb+0x2d7/0x410 net/ipv4/udp.c:1470
__udp_queue_rcv_skb net/ipv4/udp.c:1940 [inline]
udp_queue_rcv_one_skb+0x7bd/0xc70 net/ipv4/udp.c:2057
udp_queue_rcv_skb+0xb5/0x400 net/ipv4/udp.c:2074
udp_unicast_rcv_skb.isra.0+0x7e/0x1c0 net/ipv4/udp.c:2233
__udp4_lib_rcv+0xa44/0x17c0 net/ipv4/udp.c:2300
udp_rcv+0x2b/0x40 net/ipv4/udp.c:2470
ip_protocol_deliver_rcu+0x4d/0x420 net/ipv4/ip_input.c:204
ip_local_deliver_finish+0x110/0x140 net/ipv4/ip_input.c:231
NF_HOOK include/linux/netfilter.h:305 [inline]
NF_HOOK include/linux/netfilter.h:299 [inline]
ip_local_deliver+0x133/0x210 net/ipv4/ip_input.c:252
dst_input include/net/dst.h:442 [inline]
ip_rcv_finish+0x121/0x160 net/ipv4/ip_input.c:413
NF_HOOK include/linux/netfilter.h:305 [inline]
NF_HOOK include/linux/netfilter.h:299 [inline]
ip_rcv+0x18f/0x1a0 net/ipv4/ip_input.c:523
__netif_receive_skb_one_core+0xa7/0xe0 net/core/dev.c:5010
__netif_receive_skb+0x37/0xf0 net/core/dev.c:5124
process_backlog+0x1d3/0x420 net/core/dev.c:5955
read to 0xffff888102e40b58 of 8 bytes by task 13035 on cpu 1:
__skb_wait_for_more_packets+0xfa/0x320 net/core/datagram.c:100
__skb_recv_udp+0x374/0x500 net/ipv4/udp.c:1683
udp_recvmsg+0xe1/0xb10 net/ipv4/udp.c:1712
inet_recvmsg+0xbb/0x250 net/ipv4/af_inet.c:838
sock_recvmsg_nosec+0x5c/0x70 net/socket.c:871
___sys_recvmsg+0x1a0/0x3e0 net/socket.c:2480
do_recvmmsg+0x19a/0x5c0 net/socket.c:2601
__sys_recvmmsg+0x1ef/0x200 net/socket.c:2680
__do_sys_recvmmsg net/socket.c:2703 [inline]
__se_sys_recvmmsg net/socket.c:2696 [inline]
__x64_sys_recvmmsg+0x89/0xb0 net/socket.c:2696
do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Reported by Kernel Concurrency Sanitizer on:
CPU: 1 PID: 13035 Comm: syz-executor.3 Not tainted 5.4.0-rc3+ #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-10-28 13:33:41 -07:00
..
2019-07-06 12:50:01 +02:00
2019-09-27 15:10:34 -07:00
2019-06-19 17:09:55 +02:00
2019-10-24 14:53:49 -07:00
2019-09-24 16:37:18 +02:00
2019-10-28 13:33:41 -07:00
2019-09-24 16:37:18 +02:00
2019-10-24 14:53:48 -07:00
2019-10-28 13:33:41 -07:00
2019-07-25 18:00:41 -07:00
2019-07-12 16:03:16 -07:00
2019-10-24 14:53:48 -07:00
2019-10-28 13:33:41 -07:00
2019-09-04 14:22:33 +02:00
2019-09-16 12:06:25 +02:00
2019-10-28 13:33:41 -07:00
2019-10-01 18:42:15 +02:00
2019-10-28 13:33:41 -07:00
2019-07-10 18:43:43 -07:00
2019-10-24 14:53:48 -07:00
2019-06-07 11:00:14 -07:00
2019-07-11 14:37:45 -07:00
2019-10-24 14:53:48 -07:00
2019-09-26 08:56:17 +02:00
2019-10-28 13:33:41 -07:00
2019-10-22 15:17:03 -07:00
2019-07-29 10:26:14 -07:00
2019-09-27 10:27:14 +02:00
2019-07-08 19:48:57 -07:00
2019-10-24 14:53:48 -07:00
2019-06-23 13:24:17 -07:00
2019-06-17 20:20:36 -07:00
2019-10-09 21:42:59 -07:00
2019-10-07 22:10:50 +02:00
2019-08-25 14:34:08 -07:00
2019-09-19 18:04:40 -07:00
2019-10-26 12:42:45 +02:00
2019-09-01 11:45:02 -07:00
2019-06-14 19:50:33 -07:00
2019-10-24 14:53:48 -07:00
2019-10-28 13:33:41 -07:00
2019-06-19 17:09:55 +02:00
2019-10-25 20:14:42 -07:00
2019-10-01 18:42:15 +02:00
2019-10-28 13:33:41 -07:00
2019-09-16 09:18:03 +02:00
2019-09-21 18:45:46 -07:00
2019-10-02 12:16:57 -04:00
2019-06-19 17:09:55 +02:00
2019-10-24 14:53:48 -07:00
2019-10-16 12:20:17 -07:00
2019-10-25 16:14:05 -07:00
2019-10-28 13:33:41 -07:00
2019-10-25 19:18:21 -07:00
2019-06-22 08:59:24 -04:00
2019-10-10 16:14:28 -04:00
2019-10-28 13:33:41 -07:00
2019-09-07 18:10:34 +02:00
2019-10-28 13:33:41 -07:00
2019-10-28 13:33:41 -07:00
2019-08-10 15:25:47 -07:00
2019-10-07 22:10:50 +02:00
2019-10-09 21:42:59 -07:00
2019-10-23 20:22:11 -07:00
2019-10-01 18:42:15 +02:00
2019-08-17 12:40:08 -07:00
2019-07-19 10:42:02 -07:00