Eric Dumazet
ff999198ec
net-timestamp: convert sk->sk_tskey to atomic_t
...
[ Upstream commit a1cdec57e03a1352e92fbbe7974039dda4efcec0 ]
UDP sendmsg() can be lockless, this is causing all kinds
of data races.
This patch converts sk->sk_tskey to remove one of these races.
BUG: KCSAN: data-race in __ip_append_data / __ip_append_data
read to 0xffff8881035d4b6c of 4 bytes by task 8877 on cpu 1:
__ip_append_data+0x1c1/0x1de0 net/ipv4/ip_output.c:994
ip_make_skb+0x13f/0x2d0 net/ipv4/ip_output.c:1636
udp_sendmsg+0x12bd/0x14c0 net/ipv4/udp.c:1249
inet_sendmsg+0x5f/0x80 net/ipv4/af_inet.c:819
sock_sendmsg_nosec net/socket.c:705 [inline]
sock_sendmsg net/socket.c:725 [inline]
____sys_sendmsg+0x39a/0x510 net/socket.c:2413
___sys_sendmsg net/socket.c:2467 [inline]
__sys_sendmmsg+0x267/0x4c0 net/socket.c:2553
__do_sys_sendmmsg net/socket.c:2582 [inline]
__se_sys_sendmmsg net/socket.c:2579 [inline]
__x64_sys_sendmmsg+0x53/0x60 net/socket.c:2579
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
write to 0xffff8881035d4b6c of 4 bytes by task 8880 on cpu 0:
__ip_append_data+0x1d8/0x1de0 net/ipv4/ip_output.c:994
ip_make_skb+0x13f/0x2d0 net/ipv4/ip_output.c:1636
udp_sendmsg+0x12bd/0x14c0 net/ipv4/udp.c:1249
inet_sendmsg+0x5f/0x80 net/ipv4/af_inet.c:819
sock_sendmsg_nosec net/socket.c:705 [inline]
sock_sendmsg net/socket.c:725 [inline]
____sys_sendmsg+0x39a/0x510 net/socket.c:2413
___sys_sendmsg net/socket.c:2467 [inline]
__sys_sendmmsg+0x267/0x4c0 net/socket.c:2553
__do_sys_sendmmsg net/socket.c:2582 [inline]
__se_sys_sendmmsg net/socket.c:2579 [inline]
__x64_sys_sendmmsg+0x53/0x60 net/socket.c:2579
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
value changed: 0x0000054d -> 0x0000054e
Reported by Kernel Concurrency Sanitizer on:
CPU: 0 PID: 8880 Comm: syz-executor.5 Not tainted 5.17.0-rc2-syzkaller-00167-gdcb85f85fa6f-dirty #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Fixes: 09c2d251b707 ("net-timestamp: add key to disambiguate concurrent datagrams")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-03-02 11:48:01 +01:00
..
2021-07-22 16:19:03 +02:00
2021-11-18 19:17:16 +01:00
2021-08-13 16:30:35 -07:00
2021-12-01 09:04:53 +01:00
2021-07-23 14:20:25 +01:00
2021-06-10 14:08:09 -07:00
2022-02-23 12:03:05 +01:00
2022-01-27 11:04:25 +01:00
2022-02-01 17:27:14 +01:00
2021-09-28 09:29:28 +02:00
2021-06-25 13:13:50 +02:00
2022-02-23 12:03:13 +01:00
2021-09-14 12:51:15 +01:00
2022-03-02 11:48:01 +01:00
2021-06-30 15:51:09 -07:00
2022-03-02 11:48:01 +01:00
2021-11-18 19:16:33 +01:00
2021-08-05 13:27:50 +01:00
2022-02-23 12:03:11 +01:00
2021-08-03 13:05:26 +01:00
2021-12-14 10:57:09 +01:00
2021-06-16 12:13:01 -07:00
2022-02-08 18:34:09 +01:00
2022-03-02 11:48:01 +01:00
2022-03-02 11:48:01 +01:00
2021-08-09 10:13:32 +01:00
2021-06-29 11:28:21 -07:00
2021-09-09 11:00:20 +01:00
2021-06-08 16:31:25 -07:00
2021-08-05 13:27:50 +01:00
2022-02-23 12:03:10 +01:00
2021-09-07 14:06:08 +01:00
2021-12-08 09:04:53 +01:00
2021-12-08 09:04:47 +01:00
2022-03-02 11:47:53 +01:00
2022-01-05 12:42:37 +01:00
2022-03-02 11:47:59 +01:00
2021-08-30 12:23:18 +01:00
2021-12-17 10:30:15 +01:00
2022-01-27 11:04:00 +01:00
2022-01-27 11:02:48 +01:00
2022-03-02 11:47:57 +01:00
2022-02-05 12:38:59 +01:00
2022-01-11 15:35:16 +01:00
2021-09-02 11:37:02 +01:00
2021-12-22 09:32:42 +01:00
2022-02-01 17:27:11 +01:00
2022-03-02 11:47:57 +01:00
2022-01-11 15:35:14 +01:00
2022-03-02 11:47:59 +01:00
2021-11-18 19:17:11 +01:00
2022-02-23 12:03:19 +01:00
2021-08-04 12:35:07 +01:00
2022-03-02 11:47:56 +01:00
2021-12-08 09:04:41 +01:00
2022-01-27 11:05:30 +01:00
2022-02-23 12:03:09 +01:00
2022-02-23 12:03:11 +01:00
2021-06-10 14:08:09 -07:00
2021-12-22 09:32:51 +01:00
2022-01-27 11:05:36 +01:00
2021-06-11 12:55:28 -07:00
2021-07-29 15:06:49 +01:00
2021-07-29 15:06:49 +01:00
2022-01-27 11:03:52 +01:00