============================================ WARNING: possible recursive locking detected 4.19.211-syzkaller #0 Not tainted -------------------------------------------- syz-executor.1/30574 is trying to acquire lock: 000000007a38187c (&port_lock_key){-.-.}, at: uart_write+0x1ce/0x6f0 drivers/tty/serial/serial_core.c:591 but task is already holding lock: 000000007a38187c (&port_lock_key){-.-.}, at: serial8250_handle_irq.part.0+0x21/0x3d0 drivers/tty/serial/8250/8250_port.c:1876 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 4 locks held by syz-executor.1/30574: #0: 00000000ae13665c (&mm->mmap_sem){++++}, at: __do_page_fault+0x398/0xd60 arch/x86/mm/fault.c:1341 #1: 00000000514fa9e7 (&(&i->lock)->rlock){-.-.}, at: spin_lock include/linux/spinlock.h:329 [inline] #1: 00000000514fa9e7 (&(&i->lock)->rlock){-.-.}, at: serial8250_interrupt+0x3a/0x240 drivers/tty/serial/8250/8250_core.c:115 #2: 000000007a38187c (&port_lock_key){-.-.}, at: serial8250_handle_irq.part.0+0x21/0x3d0 drivers/tty/serial/8250/8250_port.c:1876 #3: 0000000061736657 (&tty->ldisc_sem){++++}, at: tty_ldisc_ref+0x1d/0x80 drivers/tty/tty_ldisc.c:293 stack backtrace: CPU: 1 PID: 30574 Comm: syz-executor.1 Not tainted 4.19.211-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x1fc/0x2ef lib/dump_stack.c:118 print_deadlock_bug kernel/locking/lockdep.c:1764 [inline] check_deadlock kernel/locking/lockdep.c:1808 [inline] validate_chain kernel/locking/lockdep.c:2404 [inline] __lock_acquire.cold+0x121/0x57e kernel/locking/lockdep.c:3416 lock_acquire+0x170/0x3c0 kernel/locking/lockdep.c:3908 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:152 uart_write+0x1ce/0x6f0 drivers/tty/serial/serial_core.c:591 n_hdlc_send_frames+0x278/0x470 drivers/tty/n_hdlc.c:403 n_hdlc_tty_wakeup+0xa0/0xc0 drivers/tty/n_hdlc.c:479 tty_wakeup+0xd4/0x110 drivers/tty/tty_io.c:534 tty_port_default_wakeup+0x26/0x40 drivers/tty/tty_port.c:50 serial8250_tx_chars+0x490/0xaf0 drivers/tty/serial/8250/8250_port.c:1813 serial8250_handle_irq.part.0+0x31f/0x3d0 drivers/tty/serial/8250/8250_port.c:1900 serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1873 [inline] serial8250_default_handle_irq+0xae/0x220 drivers/tty/serial/8250/8250_port.c:1916 serial8250_interrupt+0x101/0x240 drivers/tty/serial/8250/8250_core.c:125 __handle_irq_event_percpu+0x27e/0x8e0 kernel/irq/handle.c:149 handle_irq_event_percpu kernel/irq/handle.c:189 [inline] handle_irq_event+0x102/0x290 kernel/irq/handle.c:206 handle_edge_irq+0x260/0xcf0 kernel/irq/chip.c:800 generic_handle_irq_desc include/linux/irqdesc.h:155 [inline] handle_irq+0x35/0x50 arch/x86/kernel/irq_64.c:87 do_IRQ+0x93/0x1c0 arch/x86/kernel/irq.c:246 common_interrupt+0xf/0xf arch/x86/entry/entry_64.S:670 RIP: 0010:handle_pte_fault mm/memory.c:4154 [inline] RIP: 0010:__handle_mm_fault+0x8e4/0x41c0 mm/memory.c:4299 Code: 00 00 fc ff df 4d 21 fc 48 01 c3 4c 01 e3 48 89 d9 48 89 9c 24 b0 00 00 00 48 c1 e9 03 80 3c 11 00 0f 85 68 32 00 00 48 8b 03 <48> 89 84 24 90 00 00 00 48 8b 9c 24 90 00 00 00 31 ff 49 89 dc 49 RSP: 0000:ffff8880557afce8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffd2 RAX: 8000000058952865 RBX: ffff8880a112c350 RCX: 1ffff1101422586a RDX: dffffc0000000000 RSI: ffffffff818cbc1b RDI: 0000000000000007 RBP: ffffffff89cfb4e0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000007 R11: 0000000000000000 R12: 00000000a112c000 R13: 1ffff1100aaf5fa3 R14: 0000000000000000 R15: 000ffffffffff000 handle_mm_fault+0x436/0xb10 mm/memory.c:4336 __do_page_fault+0x68e/0xd60 arch/x86/mm/fault.c:1412 page_fault+0x1e/0x30 arch/x86/entry/entry_64.S:1205 RIP: 0033:0x7f5976af785d Code: 0c 48 89 df 41 83 c6 01 e8 00 f7 ff ff 48 83 c3 20 49 39 df 75 df 44 89 75 00 8b 05 ad 27 17 00 48 8b 15 76 fb 0a 01 83 c0 01 <89> 05 9d 27 17 00 89 02 48 83 c4 18 5b 5d 41 5c 41 5d 41 5e 41 5f RSP: 002b:00007ffd117b30c0 EFLAGS: 00010202 RAX: 0000000000000001 RBX: 00007f5976c6df80 RCX: 0000001b2f920000 RDX: 0000001b2f920000 RSI: 0000000000000001 RDI: 0000000000000000 RBP: 0000001b2f920020 R08: 0000001b2f960000 R09: 00007f5976c72068 R10: 00007ffd117b3230 R11: 0000000000000246 R12: 00007f5976c6df80 R13: 0000001b2f920018 R14: 0000001b2f92001c R15: 0000000000000032 ---------------- Code disassembly (best guess), 4 bytes skipped: 0: df 4d 21 fisttps 0x21(%rbp) 3: fc cld 4: 48 01 c3 add %rax,%rbx 7: 4c 01 e3 add %r12,%rbx a: 48 89 d9 mov %rbx,%rcx d: 48 89 9c 24 b0 00 00 mov %rbx,0xb0(%rsp) 14: 00 15: 48 c1 e9 03 shr $0x3,%rcx 19: 80 3c 11 00 cmpb $0x0,(%rcx,%rdx,1) 1d: 0f 85 68 32 00 00 jne 0x328b 23: 48 8b 03 mov (%rbx),%rax * 26: 48 89 84 24 90 00 00 mov %rax,0x90(%rsp) <-- trapping instruction 2d: 00 2e: 48 8b 9c 24 90 00 00 mov 0x90(%rsp),%rbx 35: 00 36: 31 ff xor %edi,%edi 38: 49 89 dc mov %rbx,%r12 3b: 49 rex.WB