syzbot


KCSAN: data-race in __stop_tty / n_tty_receive_char (10)

Status: moderation: reported on 2026/02/18 06:47
Subsystems: serial
[Documentation on labels]
Reported-by: syzbot+80594a852f796415b1ae@syzkaller.appspotmail.com
First crash: 53d, last: 3d18h
✨ AI Jobs (1)
ID Workflow Result Correct Bug Created Started Finished Revision Error
bb82e7be-a2fc-4d66-a517-7390f5510a98 assessment-kcsan Benign: ✅  Confident: ✅  KCSAN: data-race in __stop_tty / n_tty_receive_char (10) 2026/02/23 15:30 2026/02/23 15:30 2026/02/23 15:40 305c0ec5cd886e2d13738e28e1b2df9b0ec20fc9
Similar bugs (9)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (7) serial 6 1 614d 614d 0/29 auto-obsoleted due to no activity on 2024/09/10 06:07
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (9) serial 6 4 238d 292d 0/29 auto-obsoleted due to no activity on 2025/10/12 00:16
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (5) serial 6 4 940d 977d 0/29 auto-obsoleted due to no activity on 2023/10/20 07:37
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (6) serial 6 17 651d 809d 0/29 auto-obsoleted due to no activity on 2024/08/04 08:07
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (8) serial 6 7 372d 456d 0/29 auto-obsoleted due to no activity on 2025/05/31 03:59
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (4) serial 6 2 1284d 1290d 0/29 auto-obsoleted due to no activity on 2022/11/10 02:34
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (3) serial 6 1 1373d 1373d 0/29 auto-closed as invalid on 2022/08/13 02:09
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char (2) serial 6 2 1463d 1472d 0/29 auto-closed as invalid on 2022/05/15 01:17
upstream KCSAN: data-race in __stop_tty / n_tty_receive_char serial 6 1 1658d 1658d 0/29 auto-closed as invalid on 2021/11/01 13:40

Sample crash report:
==================================================================
BUG: KCSAN: data-race in __stop_tty / n_tty_receive_char

write to 0xffff8881147b19bc of 1 bytes by task 6611 on cpu 1:
 __stop_tty+0x36/0x90 drivers/tty/tty_io.c:744
 n_tty_ioctl_helper+0x2d1/0x370 drivers/tty/tty_ioctl.c:951
 n_tty_ioctl+0x101/0x230 drivers/tty/n_tty.c:2496
 tty_ioctl+0x83e/0xb80 drivers/tty/tty_io.c:2801
 vfs_ioctl fs/ioctl.c:51 [inline]
 __do_sys_ioctl fs/ioctl.c:597 [inline]
 __se_sys_ioctl+0xce/0x140 fs/ioctl.c:583
 __x64_sys_ioctl+0x43/0x50 fs/ioctl.c:583
 x64_sys_call+0x1563/0x3020 arch/x86/include/generated/asm/syscalls_64.h:17
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0x12c/0x370 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f

read to 0xffff8881147b19bc of 1 bytes by task 1863 on cpu 0:
 n_tty_receive_char+0x3d/0x6d0 drivers/tty/n_tty.c:1403
 n_tty_receive_buf_standard+0x552/0x3f60 drivers/tty/n_tty.c:1582
 __receive_buf drivers/tty/n_tty.c:1616 [inline]
 n_tty_receive_buf_common+0x7f3/0xc10 drivers/tty/n_tty.c:1715
 n_tty_receive_buf2+0x33/0x40 drivers/tty/n_tty.c:1759
 tty_ldisc_receive_buf+0x66/0xf0 drivers/tty/tty_buffer.c:387
 tty_port_default_receive_buf+0x59/0x90 drivers/tty/tty_port.c:37
 receive_buf drivers/tty/tty_buffer.c:445 [inline]
 flush_to_ldisc+0x148/0x340 drivers/tty/tty_buffer.c:495
 process_one_work kernel/workqueue.c:3276 [inline]
 process_scheduled_works+0x513/0xa10 kernel/workqueue.c:3359
 worker_thread+0x58a/0x780 kernel/workqueue.c:3440
 kthread+0x22a/0x280 kernel/kthread.c:436
 ret_from_fork+0x150/0x360 arch/x86/kernel/process.c:158
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

value changed: 0x00 -> 0x01

Reported by Kernel Concurrency Sanitizer on:
CPU: 0 UID: 0 PID: 1863 Comm: kworker/u8:10 Not tainted syzkaller #0 PREEMPT(full) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/18/2026
Workqueue: events_unbound flush_to_ldisc
==================================================================
bond0 (unregistering): Released all slaves
netdevsim netdevsim7 netdevsim3 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim7 netdevsim2 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim7 netdevsim1 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim7 netdevsim0 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim5 netdevsim3 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim5 netdevsim2 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim5 netdevsim1 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim5 netdevsim0 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
bridge_slave_1: left allmulticast mode
bridge_slave_1: left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
bridge_slave_0: left allmulticast mode
bridge_slave_0: left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
bridge_slave_1: left allmulticast mode
bridge_slave_1: left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
bridge_slave_0: left allmulticast mode
bridge_slave_0: left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
bond0 (unregistering): (slave bond_slave_0): Releasing backup interface
bond0 (unregistering): (slave bond_slave_1): Releasing backup interface
bond0 (unregistering): Released all slaves
bond0 (unregistering): (slave bond_slave_0): Releasing backup interface
bond0 (unregistering): (slave bond_slave_1): Releasing backup interface
bond0 (unregistering): (slave team0): Releasing backup interface
bond0 (unregistering): Released all slaves
hsr_slave_0: left promiscuous mode
hsr_slave_1: left promiscuous mode
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
hsr_slave_0: left promiscuous mode
hsr_slave_1: left promiscuous mode
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
veth1_macvtap: left promiscuous mode
veth0_macvtap: left promiscuous mode
veth1_vlan: left promiscuous mode
veth0_vlan: left promiscuous mode
veth1_macvtap: left promiscuous mode
veth0_macvtap: left promiscuous mode
veth1_vlan: left promiscuous mode
veth0_vlan: left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
netdevsim netdevsim8 netdevsim3 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim8 netdevsim2 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim8 netdevsim1 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
netdevsim netdevsim8 netdevsim0 (unregistering): unset [1, 0] type 2 family 0 port 6081 - 0
bridge_slave_1: left allmulticast mode
bridge_slave_1: left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
bridge_slave_0: left allmulticast mode
bridge_slave_0: left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
bond0 (unregistering): (slave bond_slave_0): Releasing backup interface
bond0 (unregistering): (slave bond_slave_1): Releasing backup interface
bond0 (unregistering): Released all slaves
hsr_slave_0: left promiscuous mode
hsr_slave_1: left promiscuous mode
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
veth1_macvtap: left promiscuous mode
veth0_macvtap: left promiscuous mode
veth1_vlan: left promiscuous mode
veth0_vlan: left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed

Crashes (2):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/04/09 03:44 upstream 7f87a5ea75f0 38c8e246 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __stop_tty / n_tty_receive_char
2026/02/18 06:47 upstream 2961f841b025 39751c21 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-kcsan-gce KCSAN: data-race in __stop_tty / n_tty_receive_char
* Struck through repros no longer work on HEAD.