RBP: 00007fa52845b1d0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007ffe917ac3af R14: 00007fa52845b300 R15: 0000000000022000 ====================================================== WARNING: possible circular locking dependency detected 5.10.198 #1 Not tainted ------------------------------------------------------ syz-executor.5/11996 is trying to acquire lock: ffffffff84f0c780 (console_owner){-...}-{0:0}, at: console_unlock+0x2e1/0xb40 kernel/printk/printk.c:2507 but task is already holding lock: ffff8880181a5158 (&port->lock){-.-.}-{2:2}, at: tty_insert_flip_string_and_push_buffer+0x2b/0x160 drivers/tty/tty_buffer.c:575 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&port->lock){-.-.}-{2:2}: __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x36/0x60 kernel/locking/spinlock.c:159 tty_port_tty_get+0x1f/0x100 drivers/tty/tty_port.c:289 tty_port_default_wakeup+0x11/0x40 drivers/tty/tty_port.c:48 serial8250_tx_chars+0x51f/0xb00 drivers/tty/serial/8250/8250_port.c:1832 serial8250_handle_irq+0x4e4/0x660 drivers/tty/serial/8250/8250_port.c:1928 serial8250_default_handle_irq+0x96/0x210 drivers/tty/serial/8250/8250_port.c:1944 serial8250_interrupt+0xf4/0x1b0 drivers/tty/serial/8250/8250_core.c:127 __handle_irq_event_percpu+0x2ef/0x6d0 kernel/irq/handle.c:156 handle_irq_event_percpu kernel/irq/handle.c:196 [inline] handle_irq_event+0xff/0x280 kernel/irq/handle.c:213 handle_edge_irq+0x249/0xd00 kernel/irq/chip.c:822 asm_call_irq_on_stack+0x12/0x20 __run_irq_on_irqstack arch/x86/include/asm/irq_stack.h:48 [inline] run_irq_on_irqstack_cond arch/x86/include/asm/irq_stack.h:101 [inline] handle_irq arch/x86/kernel/irq.c:230 [inline] __common_interrupt arch/x86/kernel/irq.c:249 [inline] common_interrupt+0xdd/0x1a0 arch/x86/kernel/irq.c:239 asm_common_interrupt+0x1e/0x40 arch/x86/include/asm/idtentry.h:626 native_safe_halt arch/x86/include/asm/irqflags.h:60 [inline] arch_safe_halt arch/x86/include/asm/irqflags.h:103 [inline] default_idle+0xe/0x20 arch/x86/kernel/process.c:706 default_idle_call+0xbf/0x2c0 kernel/sched/idle.c:112 cpuidle_idle_call kernel/sched/idle.c:194 [inline] do_idle+0x3ad/0x520 kernel/sched/idle.c:300 cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:396 secondary_startup_64_no_verify+0xc2/0xcb -> #1 (&port_lock_key){-.-.}-{2:2}: __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x36/0x60 kernel/locking/spinlock.c:159 serial8250_console_write+0x9f5/0xc60 drivers/tty/serial/8250/8250_port.c:3331 call_console_drivers kernel/printk/printk.c:1911 [inline] console_unlock+0x82a/0xb40 kernel/printk/printk.c:2532 register_console kernel/printk/printk.c:2873 [inline] register_console+0x53d/0x800 kernel/printk/printk.c:2763 univ8250_console_init+0x3a/0x4a drivers/tty/serial/8250/8250_core.c:700 console_init+0x24c/0x356 kernel/printk/printk.c:2983 start_kernel+0x2e6/0x489 init/main.c:979 secondary_startup_64_no_verify+0xc2/0xcb -> #0 (console_owner){-...}-{0:0}: check_prev_add kernel/locking/lockdep.c:2988 [inline] check_prevs_add kernel/locking/lockdep.c:3113 [inline] validate_chain kernel/locking/lockdep.c:3728 [inline] __lock_acquire+0x29e7/0x5b00 kernel/locking/lockdep.c:4954 lock_acquire kernel/locking/lockdep.c:5565 [inline] lock_acquire+0x197/0x470 kernel/locking/lockdep.c:5530 console_lock_spinning_enable kernel/printk/printk.c:1763 [inline] console_unlock+0x360/0xb40 kernel/printk/printk.c:2529 vprintk_emit+0x1de/0x4d0 kernel/printk/printk.c:2054 vprintk_func+0x8b/0x140 kernel/printk/printk_safe.c:401 printk+0xba/0xf1 kernel/printk/printk.c:2102 fail_dump lib/fault-inject.c:45 [inline] should_fail+0x47a/0x5a0 lib/fault-inject.c:146 should_failslab+0x5/0x20 mm/slab_common.c:1193 slab_pre_alloc_hook mm/slab.h:515 [inline] slab_alloc_node mm/slub.c:2821 [inline] slab_alloc mm/slub.c:2904 [inline] __kmalloc+0x72/0x390 mm/slub.c:3967 kmalloc include/linux/slab.h:557 [inline] tty_buffer_alloc+0x243/0x2b0 drivers/tty/tty_buffer.c:175 __tty_buffer_request_room+0x156/0x2a0 drivers/tty/tty_buffer.c:274 tty_insert_flip_string_fixed_flag+0x91/0x250 drivers/tty/tty_buffer.c:319 tty_insert_flip_string include/linux/tty_flip.h:36 [inline] tty_insert_flip_string_and_push_buffer+0x3e/0x160 drivers/tty/tty_buffer.c:576 pty_write+0xe6/0x110 drivers/tty/pty.c:119 n_tty_write+0xa86/0xfe0 drivers/tty/n_tty.c:2407 do_tty_write drivers/tty/tty_io.c:1029 [inline] file_tty_write.constprop.0+0x529/0x910 drivers/tty/tty_io.c:1119 call_write_iter include/linux/fs.h:1919 [inline] do_iter_readv_writev+0x476/0x750 fs/read_write.c:740 do_iter_write+0x191/0x670 fs/read_write.c:866 vfs_writev+0x1ae/0x620 fs/read_write.c:939 do_writev+0x139/0x300 fs/read_write.c:982 do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x62/0xc7 other info that might help us debug this: Chain exists of: console_owner --> &port_lock_key --> &port->lock Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&port->lock); lock(&port_lock_key); lock(&port->lock); lock(console_owner); *** DEADLOCK *** 6 locks held by syz-executor.5/11996: #0: ffff888049a84098 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x22/0x90 drivers/tty/tty_ldisc.c:267 #1: ffff888049a84130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: tty_write_lock drivers/tty/tty_io.c:953 [inline] #1: ffff888049a84130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: do_tty_write drivers/tty/tty_io.c:976 [inline] #1: ffff888049a84130 (&tty->atomic_write_lock){+.+.}-{3:3}, at: file_tty_write.constprop.0+0x29f/0x910 drivers/tty/tty_io.c:1119 #2: ffff888049a842e8 (&tty->termios_rwsem){++++}-{3:3}, at: n_tty_write+0x1bf/0xfe0 drivers/tty/n_tty.c:2367 #3: ffffc90013425378 (&ldata->output_lock){+.+.}-{3:3}, at: n_tty_write+0xa4d/0xfe0 drivers/tty/n_tty.c:2406 #4: ffff8880181a5158 (&port->lock){-.-.}-{2:2}, at: tty_insert_flip_string_and_push_buffer+0x2b/0x160 drivers/tty/tty_buffer.c:575 #5: ffffffff84fecb00 (console_lock){+.+.}-{0:0}, at: vprintk_func+0x8b/0x140 kernel/printk/printk_safe.c:401 stack backtrace: CPU: 1 PID: 11996 Comm: syz-executor.5 Not tainted 5.10.198 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x107/0x167 lib/dump_stack.c:118 check_noncircular+0x263/0x2e0 kernel/locking/lockdep.c:2123 check_prev_add kernel/locking/lockdep.c:2988 [inline] check_prevs_add kernel/locking/lockdep.c:3113 [inline] validate_chain kernel/locking/lockdep.c:3728 [inline] __lock_acquire+0x29e7/0x5b00 kernel/locking/lockdep.c:4954 lock_acquire kernel/locking/lockdep.c:5565 [inline] lock_acquire+0x197/0x470 kernel/locking/lockdep.c:5530 console_lock_spinning_enable kernel/printk/printk.c:1763 [inline] console_unlock+0x360/0xb40 kernel/printk/printk.c:2529 vprintk_emit+0x1de/0x4d0 kernel/printk/printk.c:2054 vprintk_func+0x8b/0x140 kernel/printk/printk_safe.c:401 printk+0xba/0xf1 kernel/printk/printk.c:2102 fail_dump lib/fault-inject.c:45 [inline] should_fail+0x47a/0x5a0 lib/fault-inject.c:146 should_failslab+0x5/0x20 mm/slab_common.c:1193 slab_pre_alloc_hook mm/slab.h:515 [inline] slab_alloc_node mm/slub.c:2821 [inline] slab_alloc mm/slub.c:2904 [inline] __kmalloc+0x72/0x390 mm/slub.c:3967 kmalloc include/linux/slab.h:557 [inline] tty_buffer_alloc+0x243/0x2b0 drivers/tty/tty_buffer.c:175 __tty_buffer_request_room+0x156/0x2a0 drivers/tty/tty_buffer.c:274 tty_insert_flip_string_fixed_flag+0x91/0x250 drivers/tty/tty_buffer.c:319 tty_insert_flip_string include/linux/tty_flip.h:36 [inline] tty_insert_flip_string_and_push_buffer+0x3e/0x160 drivers/tty/tty_buffer.c:576 pty_write+0xe6/0x110 drivers/tty/pty.c:119 n_tty_write+0xa86/0xfe0 drivers/tty/n_tty.c:2407 do_tty_write drivers/tty/tty_io.c:1029 [inline] file_tty_write.constprop.0+0x529/0x910 drivers/tty/tty_io.c:1119 call_write_iter include/linux/fs.h:1919 [inline] do_iter_readv_writev+0x476/0x750 fs/read_write.c:740 do_iter_write+0x191/0x670 fs/read_write.c:866 vfs_writev+0x1ae/0x620 fs/read_write.c:939 do_writev+0x139/0x300 fs/read_write.c:982 do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46 entry_SYSCALL_64_after_hwframe+0x62/0xc7 RIP: 0033:0x7fa52aee5b19 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fa52845b188 EFLAGS: 00000246 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: 00007fa52aff8f60 RCX: 00007fa52aee5b19 RDX: 0000000000000002 RSI: 00000000200000c0 RDI: 0000000000000007 RBP: 00007fa52845b1d0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007ffe917ac3af R14: 00007fa52845b300 R15: 0000000000022000 Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed Process accounting resumed