============================================ WARNING: possible recursive locking detected 5.15.0-syzkaller #0 Not tainted -------------------------------------------- kworker/1:22/30732 is trying to acquire lock: ffffffff90ceb310 (&port_lock_key){-.-.}-{2:2}, at: uart_write+0xfe/0x920 drivers/tty/serial/serial_core.c:570 but task is already holding lock: ffffffff90ceb310 (&port_lock_key){-.-.}-{2:2}, at: serial8250_handle_irq+0x3f/0x3e0 drivers/tty/serial/8250/8250_port.c:1908 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&port_lock_key); lock(&port_lock_key); *** DEADLOCK *** May be due to missing lock nesting notation 6 locks held by kworker/1:22/30732: #0: ffff888011465d38 ((wq_completion)events_power_efficient){+.+.}-{0:0}, at: process_one_work+0x7ca/0x1140 #1: ffffc900173ffd20 ((work_completion)(&(&gc_work->dwork)->work)){+.+.}-{0:0}, at: process_one_work+0x808/0x1140 kernel/workqueue.c:2272 #2: ffffffff8c91d500 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x5/0x30 include/linux/rcupdate.h:267 #3: ffff88801d895db0 (&i->lock){-.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:350 [inline] #3: ffff88801d895db0 (&i->lock){-.-.}-{2:2}, at: serial8250_interrupt+0x39/0x1e0 drivers/tty/serial/8250/8250_core.c:116 #4: ffffffff90ceb310 (&port_lock_key){-.-.}-{2:2}, at: serial8250_handle_irq+0x3f/0x3e0 drivers/tty/serial/8250/8250_port.c:1908 #5: ffff88802aed0098 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref+0x18/0x80 drivers/tty/tty_ldisc.c:273 stack backtrace: CPU: 1 PID: 30732 Comm: kworker/1:22 Not tainted 5.15.0-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: events_power_efficient gc_worker Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1dc/0x2d8 lib/dump_stack.c:106 print_deadlock_bug kernel/locking/lockdep.c:2944 [inline] check_deadlock kernel/locking/lockdep.c:2987 [inline] validate_chain+0x5984/0x8240 kernel/locking/lockdep.c:3776 __lock_acquire+0x1382/0x2b00 kernel/locking/lockdep.c:5015 lock_acquire+0x19f/0x4d0 kernel/locking/lockdep.c:5625 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd1/0x120 kernel/locking/spinlock.c:162 uart_write+0xfe/0x920 drivers/tty/serial/serial_core.c:570 n_hdlc_send_frames+0x34e/0xb20 drivers/tty/n_hdlc.c:290 tty_wakeup+0xb3/0xf0 drivers/tty/tty_io.c:534 tty_port_default_wakeup+0x26/0x40 drivers/tty/tty_port.c:51 serial8250_tx_chars+0x68e/0x8a0 drivers/tty/serial/8250/8250_port.c:1845 serial8250_handle_irq+0x2fd/0x3e0 drivers/tty/serial/8250/8250_port.c:1932 serial8250_default_handle_irq+0xaf/0x190 drivers/tty/serial/8250/8250_port.c:1949 serial8250_interrupt+0xa3/0x1e0 drivers/tty/serial/8250/8250_core.c:126 __handle_irq_event_percpu+0x20d/0x730 kernel/irq/handle.c:158 handle_irq_event_percpu kernel/irq/handle.c:198 [inline] handle_irq_event+0x10a/0x300 kernel/irq/handle.c:215 handle_edge_irq+0x245/0xbe0 kernel/irq/chip.c:822 generic_handle_irq_desc include/linux/irqdesc.h:158 [inline] handle_irq arch/x86/kernel/irq.c:231 [inline] __common_interrupt+0xce/0x1e0 arch/x86/kernel/irq.c:250 common_interrupt+0x9c/0xc0 arch/x86/kernel/irq.c:240 asm_common_interrupt+0x1e/0x40 RIP: 0010:seqcount_lockdep_reader_access+0x1e8/0x230 include/linux/seqlock.h:106 Code: f9 4d 85 ed 75 16 e8 17 d2 30 f9 eb 15 e8 10 d2 30 f9 e8 ab ee a7 01 4d 85 ed 74 ea e8 01 d2 30 f9 fb 48 c7 04 24 0e 36 e0 45 <4b> c7 04 3c 00 00 00 00 66 43 c7 44 3c 09 00 00 43 c6 44 3c 0b 00 RSP: 0018:ffffc900173ffb00 EFLAGS: 00000293 RAX: ffffffff885328df RBX: 0000000000000000 RCX: ffff888018dd0000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc900173ffba8 R08: ffffffff885328b5 R09: fffffbfff1fa65ee R10: fffffbfff1fa65ee R11: 0000000000000000 R12: dffffc0000000000 R13: 0000000000000200 R14: 0000000000000046 R15: 1ffff92002e7ff60 nf_conntrack_get_ht include/net/netfilter/nf_conntrack.h:326 [inline] gc_worker+0x19a/0xbb0 net/netfilter/nf_conntrack_core.c:1441 process_one_work+0x853/0x1140 kernel/workqueue.c:2297 worker_thread+0xac1/0x1320 kernel/workqueue.c:2444 kthread+0x468/0x490 kernel/kthread.c:327 ret_from_fork+0x1f/0x30 ---------------- Code disassembly (best guess): 0: f9 stc 1: 4d 85 ed test %r13,%r13 4: 75 16 jne 0x1c 6: e8 17 d2 30 f9 callq 0xf930d222 b: eb 15 jmp 0x22 d: e8 10 d2 30 f9 callq 0xf930d222 12: e8 ab ee a7 01 callq 0x1a7eec2 17: 4d 85 ed test %r13,%r13 1a: 74 ea je 0x6 1c: e8 01 d2 30 f9 callq 0xf930d222 21: fb sti 22: 48 c7 04 24 0e 36 e0 movq $0x45e0360e,(%rsp) 29: 45 * 2a: 4b c7 04 3c 00 00 00 movq $0x0,(%r12,%r15,1) <-- trapping instruction 31: 00 32: 66 43 c7 44 3c 09 00 movw $0x0,0x9(%r12,%r15,1) 39: 00 3a: 43 c6 44 3c 0b 00 movb $0x0,0xb(%r12,%r15,1)