Kuniyuki Iwashima
afe8764f76
af_unix: Fix data-races around sk->sk_shutdown.
...
sk->sk_shutdown is changed under unix_state_lock(sk), but
unix_dgram_sendmsg() calls two functions to read sk_shutdown locklessly.
sock_alloc_send_pskb
`- sock_wait_for_wmem
Let's use READ_ONCE() there.
Note that the writer side was marked by commit e1d09c2c2f57 ("af_unix:
Fix data races around sk->sk_shutdown.").
BUG: KCSAN: data-race in sock_alloc_send_pskb / unix_release_sock
write (marked) to 0xffff8880069af12c of 1 bytes by task 1 on cpu 1:
unix_release_sock+0x75c/0x910 net/unix/af_unix.c:631
unix_release+0x59/0x80 net/unix/af_unix.c:1053
__sock_release+0x7d/0x170 net/socket.c:654
sock_close+0x19/0x30 net/socket.c:1386
__fput+0x2a3/0x680 fs/file_table.c:384
____fput+0x15/0x20 fs/file_table.c:412
task_work_run+0x116/0x1a0 kernel/task_work.c:179
resume_user_mode_work include/linux/resume_user_mode.h:49 [inline]
exit_to_user_mode_loop kernel/entry/common.c:171 [inline]
exit_to_user_mode_prepare+0x174/0x180 kernel/entry/common.c:204
__syscall_exit_to_user_mode_work kernel/entry/common.c:286 [inline]
syscall_exit_to_user_mode+0x1a/0x30 kernel/entry/common.c:297
do_syscall_64+0x4b/0x90 arch/x86/entry/common.c:86
entry_SYSCALL_64_after_hwframe+0x6e/0xd8
read to 0xffff8880069af12c of 1 bytes by task 28650 on cpu 0:
sock_alloc_send_pskb+0xd2/0x620 net/core/sock.c:2767
unix_dgram_sendmsg+0x2f8/0x14f0 net/unix/af_unix.c:1944
unix_seqpacket_sendmsg net/unix/af_unix.c:2308 [inline]
unix_seqpacket_sendmsg+0xba/0x130 net/unix/af_unix.c:2292
sock_sendmsg_nosec net/socket.c:725 [inline]
sock_sendmsg+0x148/0x160 net/socket.c:748
____sys_sendmsg+0x4e4/0x610 net/socket.c:2494
___sys_sendmsg+0xc6/0x140 net/socket.c:2548
__sys_sendmsg+0x94/0x140 net/socket.c:2577
__do_sys_sendmsg net/socket.c:2586 [inline]
__se_sys_sendmsg net/socket.c:2584 [inline]
__x64_sys_sendmsg+0x45/0x50 net/socket.c:2584
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3b/0x90 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x6e/0xd8
value changed: 0x00 -> 0x03
Reported by Kernel Concurrency Sanitizer on:
CPU: 0 PID: 28650 Comm: systemd-coredum Not tainted 6.4.0-11989-g6843306689af #6
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzkaller <syzkaller@googlegroups.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-09-04 11:06:16 +01:00
..
2023-08-09 15:32:43 -07:00
2023-08-18 12:44:56 -07:00
2023-06-24 15:50:13 -07:00
2023-06-24 15:50:13 -07:00
2023-06-24 15:50:13 -07:00
2023-08-24 10:51:39 -07:00
2023-08-24 12:23:46 -07:00
2023-08-30 08:36:17 +02:00
2023-05-31 13:06:57 +02:00
2023-08-22 15:13:20 +02:00
2023-06-24 15:50:13 -07:00
2023-09-01 07:27:33 +01:00
2023-08-02 09:07:34 +02:00
2023-09-04 11:06:16 +01:00
2023-08-01 21:07:46 -07:00
2023-08-29 07:44:56 +02:00
2023-08-28 08:02:24 -07:00
2023-08-09 13:08:09 -07:00
2023-08-15 15:01:03 -07:00
2023-09-01 07:25:14 +01:00
2023-07-31 20:11:47 -07:00
2023-08-15 15:00:45 -07:00
2023-09-01 08:11:51 +01:00
2023-09-04 07:07:30 +01:00
2023-06-24 15:50:13 -07:00
2023-08-18 12:44:56 -07:00
2023-08-16 11:09:16 +01:00
2023-08-09 15:34:28 -07:00
2023-08-25 18:35:09 -07:00
2023-06-24 15:41:46 -07:00
2023-06-24 15:50:13 -07:00
2023-06-10 00:11:41 -07:00
2023-09-01 07:27:33 +01:00
2023-08-15 14:54:44 -07:00
2023-08-31 01:29:28 +02:00
2023-08-02 12:28:22 -07:00
2023-08-15 15:01:03 -07:00
2023-08-28 06:58:46 +01:00
2023-08-15 15:00:45 -07:00
2023-06-10 00:11:41 -07:00
2023-08-18 12:44:56 -07:00
2023-08-10 14:10:53 -07:00
2023-06-24 15:50:13 -07:00
2023-07-17 09:02:30 +01:00
2023-08-13 12:25:42 +01:00
2023-06-24 15:50:13 -07:00
2023-06-28 16:43:10 -07:00
2023-08-31 11:21:52 +02:00
2023-08-31 11:56:59 +02:00
2023-08-21 07:41:57 +01:00
2023-08-29 11:33:01 -07:00
2023-07-21 08:54:03 +01:00
2023-08-15 15:00:45 -07:00
2023-08-27 17:17:42 -07:00
2023-09-04 11:06:16 +01:00
2023-07-31 14:41:08 -07:00
2023-08-22 21:40:40 +02:00
2023-06-24 15:50:13 -07:00
2023-08-31 13:21:11 +02:00
2023-08-18 12:44:56 -07:00
2023-07-19 10:07:27 -07:00
2023-09-01 07:27:33 +01:00