============================================
WARNING: possible recursive locking detected
5.16.0-rc1-syzkaller #0 Not tainted
--------------------------------------------
systemd-udevd/11123 is trying to acquire lock:
ffffffff91161430
 (&port_lock_key){-.-.}-{2:2}
, at: uart_write+0xfe/0x920 drivers/tty/serial/serial_core.c:577
but task is already holding lock:
ffffffff91161430 (&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
5 locks held by systemd-udevd/11123:
 #0: ffff888032290d38 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:349 [inline]
 #0: ffff888032290d38 (ptlock_ptr(page)#2){+.+.}-{2:2}, at: zap_pte_range+0x28d/0x1ba0 mm/memory.c:1323
 #1: ffffffff8cd1da80 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x0/0x30
 #2: ffff88807ee8beb0 (&i->lock){-.-.}-{2:2}, at: spin_lock include/linux/spinlock.h:349 [inline]
 #2: ffff88807ee8beb0 (&i->lock){-.-.}-{2:2}, at: serial8250_interrupt+0x39/0x1e0 drivers/tty/serial/8250/8250_core.c:116
 #3: ffffffff91161430 (&port_lock_key){-.-.}-{2:2}, at: serial8250_handle_irq+0x3f/0x3e0 drivers/tty/serial/8250/8250_port.c:1908
 #4: ffff888082d13098 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref+0x18/0x80 drivers/tty/tty_ldisc.c:273
stack backtrace:
CPU: 1 PID: 11123 Comm: systemd-udevd Not tainted 5.16.0-rc1-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
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:2956 [inline]
 check_deadlock kernel/locking/lockdep.c:2999 [inline]
 validate_chain+0x5984/0x8240 kernel/locking/lockdep.c:3788
 __lock_acquire+0x1382/0x2b00 kernel/locking/lockdep.c:5027
 lock_acquire+0x19f/0x4d0 kernel/locking/lockdep.c:5637
 __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:577
 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+0x9f/0xc0 arch/x86/kernel/irq.c:240
 
 
 asm_common_interrupt+0x1e/0x40
RIP: 0010:folio_memcg_lock+0x2b7/0x4e0 mm/memcontrol.c:2043
Code: 48 8d bc 24 80 00 00 00 e8 f6 21 fb ff f6 84 24 81 00 00 00 02 0f 85 18 01 00 00 41 f7 c7 00 02 00 00 74 01 fb 4c 8b 7c 24 20 <49> 8d 9f c0 10 00 00 48 89 df be 04 00 00 00 e8 65 23 fb ff 48 89
RSP: 0018:ffffc90002def5c0 EFLAGS: 00000206
RAX: 1ffff920005bdec8 RBX: ffff88814077c688 RCX: ffffffff81665dc1
RDX: dffffc0000000000 RSI: 0000000000000001 RDI: 0000000000000000
RBP: ffffc90002def6d8 R08: dffffc0000000000 R09: fffffbfff2034ddf
R10: fffffbfff2034ddf R11: 0000000000000000 R12: ffffea00003d8cf8
R13: dffffc0000000000 R14: 1ffff920005bdecc R15: ffff88814077c000
 page_remove_rmap+0x2b/0x10f0 mm/rmap.c:1348
 zap_pte_range+0xa25/0x1ba0 mm/memory.c:1357
 zap_pmd_range mm/memory.c:1467 [inline]
 zap_pud_range mm/memory.c:1496 [inline]
 zap_p4d_range mm/memory.c:1517 [inline]
 unmap_page_range+0x745/0xa20 mm/memory.c:1538
 unmap_vmas+0x202/0x390 mm/memory.c:1615
 exit_mmap+0x3c6/0x6f0 mm/mmap.c:3170
 __mmput+0x111/0x3a0 kernel/fork.c:1113
 exit_mm+0x211/0x2f0 kernel/exit.c:507
 do_exit+0x688/0x24f0 kernel/exit.c:819
 do_group_exit+0x168/0x2d0 kernel/exit.c:929
 __do_sys_exit_group+0x13/0x20 kernel/exit.c:940
 __se_sys_exit_group+0x10/0x10 kernel/exit.c:938
 __x64_sys_exit_group+0x37/0x40 kernel/exit.c:938
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7fdf7f65e618
Code: Unable to access opcode bytes at RIP 0x7fdf7f65e5ee.
RSP: 002b:00007ffed5942618 EFLAGS: 00000206 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 00007ffed59426e0 RCX: 00007fdf7f65e618
RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
RBP: 00007ffed5942790 R08: 00000000000000e7 R09: fffffffffffffe50
R10: 00000000ffffffff R11: 0000000000000206 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000003 R15: 000000000000000e
 
----------------
Code disassembly (best guess):
   0:	48 8d bc 24 80 00 00 	lea    0x80(%rsp),%rdi
   7:	00
   8:	e8 f6 21 fb ff       	callq  0xfffb2203
   d:	f6 84 24 81 00 00 00 	testb  $0x2,0x81(%rsp)
  14:	02
  15:	0f 85 18 01 00 00    	jne    0x133
  1b:	41 f7 c7 00 02 00 00 	test   $0x200,%r15d
  22:	74 01                	je     0x25
  24:	fb                   	sti
  25:	4c 8b 7c 24 20       	mov    0x20(%rsp),%r15
* 2a:	49 8d 9f c0 10 00 00 	lea    0x10c0(%r15),%rbx <-- trapping instruction
  31:	48 89 df             	mov    %rbx,%rdi
  34:	be 04 00 00 00       	mov    $0x4,%esi
  39:	e8 65 23 fb ff       	callq  0xfffb23a3
  3e:	48                   	rex.W
  3f:	89                   	.byte 0x89