syzbot


KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (7)

Status: internal: reported on 2022/10/18 23:20
Reported-by: syzbot+@syzkaller.appspotmail.com
Fix commit: 0c745b5141a4 kcm: annotate data-races around kcm->rx_wait
Patched on: [ci-qemu-upstream ci-qemu-upstream-386 ci-qemu2-arm32 ci-qemu2-arm64 ci-qemu2-arm64-compat ci-qemu2-arm64-mte ci-upstream-bpf-kasan-gce ci-upstream-bpf-next-kasan-gce ci-upstream-gce-arm64 ci-upstream-gce-leak ci-upstream-kasan-gce ci-upstream-kasan-gce-386 ci-upstream-kasan-gce-root ci-upstream-kasan-gce-selinux-root ci-upstream-kasan-gce-smack-root ci-upstream-kmsan-gce ci-upstream-kmsan-gce-386 ci-upstream-linux-next-kasan-gce-root ci-upstream-net-kasan-gce ci-upstream-net-this-kasan-gce ci2-upstream-fs ci2-upstream-kcsan-gce ci2-upstream-usb], missing on: [ci-qemu2-riscv64]
First crash: 103d, last: 103d
similar bugs (6):
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (4) 4 736d 761d 0/24 auto-closed as invalid on 2021/02/27 15:17
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (2) 1 951d 951d 0/24 auto-closed as invalid on 2020/07/27 00:03
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (5) 2 685d 695d 0/24 auto-closed as invalid on 2021/04/19 17:00
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree 21 979d 1167d 0/24 closed as invalid on 2020/06/18 14:24
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (6) 22 154d 412d 0/24 auto-closed as invalid on 2022/10/02 20:43
upstream KCSAN: data-race in kcm_rcv_strparser / kcm_rfree (3) 1 863d 863d 0/24 auto-closed as invalid on 2020/10/23 10:46

Sample crash report:
==================================================================
BUG: KCSAN: data-race in kcm_rcv_strparser / kcm_rfree

write to 0xffff88810784e3d0 of 1 bytes by task 1823 on cpu 1:
 reserve_rx_kcm net/kcm/kcmsock.c:283 [inline]
 kcm_rcv_strparser+0x250/0x3a0 net/kcm/kcmsock.c:363
 __strp_recv+0x64c/0xd20 net/strparser/strparser.c:301
 strp_recv+0x6d/0x80 net/strparser/strparser.c:335
 tcp_read_sock+0x13e/0x5a0 net/ipv4/tcp.c:1703
 strp_read_sock net/strparser/strparser.c:358 [inline]
 do_strp_work net/strparser/strparser.c:406 [inline]
 strp_work+0xe8/0x180 net/strparser/strparser.c:415
 process_one_work+0x3d3/0x720 kernel/workqueue.c:2289
 worker_thread+0x618/0xa70 kernel/workqueue.c:2436
 kthread+0x1a9/0x1e0 kernel/kthread.c:376
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306

read to 0xffff88810784e3d0 of 1 bytes by task 17869 on cpu 0:
 kcm_rfree+0x121/0x220 net/kcm/kcmsock.c:181
 skb_release_head_state+0x8e/0x160 net/core/skbuff.c:841
 skb_release_all net/core/skbuff.c:852 [inline]
 __kfree_skb net/core/skbuff.c:868 [inline]
 kfree_skb_reason+0x5c/0x260 net/core/skbuff.c:891
 kfree_skb include/linux/skbuff.h:1216 [inline]
 kcm_recvmsg+0x226/0x2b0 net/kcm/kcmsock.c:1161
 ____sys_recvmsg+0x16c/0x2e0
 ___sys_recvmsg net/socket.c:2743 [inline]
 do_recvmmsg+0x2f1/0x710 net/socket.c:2837
 __sys_recvmmsg net/socket.c:2916 [inline]
 __do_sys_recvmmsg net/socket.c:2939 [inline]
 __se_sys_recvmmsg net/socket.c:2932 [inline]
 __x64_sys_recvmmsg+0xde/0x160 net/socket.c:2932
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd

value changed: 0x01 -> 0x00

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 PID: 17869 Comm: syz-executor.2 Not tainted 6.1.0-rc1-syzkaller-00010-gbb1a1146467a-dirty #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022
==================================================================

Crashes (1):
Manager Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets Title
ci2-upstream-kcsan-gce 2022/10/18 10:18 upstream bb1a1146467a b31320fc .config console log report info [disk image] [vmlinux] KCSAN: data-race in kcm_rcv_strparser / kcm_rfree
* Struck through repros no longer work on HEAD.