======================================================
WARNING: possible circular locking dependency detected
5.12.0-rc3-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor.1/5492 is trying to acquire lock:
82a41234 (console_owner){-...}-{0:0}, at: console_unlock+0x19c/0x7c8 kernel/printk/printk.c:2551

but task is already holding lock:
86ccfac0 (&port->lock){....}-{2:2}, at: pty_write+0x44/0x88 drivers/tty/pty.c:119

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&port->lock){....}-{2:2}:
       lock_acquire+0x6c/0x74 kernel/locking/lockdep.c:5483
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x54/0x70 kernel/locking/spinlock.c:159
       tty_port_tty_get+0x1c/0x88 drivers/tty/tty_port.c:288
       tty_port_default_wakeup+0x10/0x28 drivers/tty/tty_port.c:47
       tty_port_tty_wakeup+0x18/0x1c drivers/tty/tty_port.c:388
       uart_write_wakeup+0x1c/0x24 drivers/tty/serial/serial_core.c:106
       pl011_tx_chars+0x278/0x2d0 drivers/tty/serial/amba-pl011.c:1417
       pl011_start_tx_pio drivers/tty/serial/amba-pl011.c:1302 [inline]
       pl011_start_tx+0xc8/0x1a0 drivers/tty/serial/amba-pl011.c:1314
       __uart_start+0x50/0x54 drivers/tty/serial/serial_core.c:127
       uart_write+0xf0/0x204 drivers/tty/serial/serial_core.c:614
       process_output_block drivers/tty/n_tty.c:591 [inline]
       n_tty_write+0x218/0x508 drivers/tty/n_tty.c:2353
       do_tty_write drivers/tty/tty_io.c:1043 [inline]
       file_tty_write.constprop.0+0x178/0x2ec drivers/tty/tty_io.c:1133
       tty_write drivers/tty/tty_io.c:1140 [inline]
       redirected_tty_write drivers/tty/tty_io.c:1162 [inline]
       redirected_tty_write+0x98/0xa4 drivers/tty/tty_io.c:1143
       call_write_iter include/linux/fs.h:1977 [inline]
       new_sync_write fs/read_write.c:518 [inline]
       vfs_write+0x260/0x350 fs/read_write.c:605
       ksys_write+0x68/0xec fs/read_write.c:658
       __do_sys_write fs/read_write.c:670 [inline]
       sys_write+0x10/0x14 fs/read_write.c:667
       ret_fast_syscall+0x0/0x2c arch/arm/mm/proc-v7.S:64
       0x7ea3f410

-> #1 (&port_lock_key){-...}-{2:2}:
       lock_acquire+0x6c/0x74 kernel/locking/lockdep.c:5483
       __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
       _raw_spin_lock+0x44/0x54 kernel/locking/spinlock.c:151
       spin_lock include/linux/spinlock.h:354 [inline]
       pl011_console_write+0x16c/0x1bc drivers/tty/serial/amba-pl011.c:2215
       call_console_drivers kernel/printk/printk.c:1862 [inline]
       console_unlock+0x31c/0x7c8 kernel/printk/printk.c:2576
       register_console kernel/printk/printk.c:2917 [inline]
       register_console+0x204/0x350 kernel/printk/printk.c:2807
       uart_configure_port drivers/tty/serial/serial_core.c:2393 [inline]
       uart_add_one_port+0x4d4/0x4fc drivers/tty/serial/serial_core.c:2906
       pl011_register_port+0x64/0xdc drivers/tty/serial/amba-pl011.c:2638
       pl011_probe+0x138/0x154 drivers/tty/serial/amba-pl011.c:2679
       amba_probe+0xa4/0x128 drivers/amba/bus.c:207
       really_probe+0x100/0x50c drivers/base/dd.c:554
       driver_probe_device+0xf8/0x1c8 drivers/base/dd.c:740
       __device_attach_driver+0x8c/0xf0 drivers/base/dd.c:846
       bus_for_each_drv+0x88/0xd8 drivers/base/bus.c:431
       __device_attach+0xdc/0x1d0 drivers/base/dd.c:914
       device_initial_probe+0x14/0x18 drivers/base/dd.c:961
       bus_probe_device+0x90/0x98 drivers/base/bus.c:491
       device_add+0x324/0x828 drivers/base/core.c:3242
       amba_device_try_add+0x58/0x304 drivers/amba/bus.c:468
       amba_deferred_retry+0x48/0xac drivers/amba/bus.c:523
       amba_deferred_retry_func+0x10/0x48 drivers/amba/bus.c:540
       process_one_work+0x2d4/0x998 kernel/workqueue.c:2275
       worker_thread+0x64/0x54c kernel/workqueue.c:2421
       kthread+0x184/0x1a4 kernel/kthread.c:292
       ret_from_fork+0x14/0x20 arch/arm/kernel/entry-common.S:158
       0x0

-> #0 (console_owner){-...}-{0:0}:
       check_prev_add kernel/locking/lockdep.c:2936 [inline]
       check_prevs_add kernel/locking/lockdep.c:3059 [inline]
       validate_chain kernel/locking/lockdep.c:3674 [inline]
       __lock_acquire+0x182c/0x3318 kernel/locking/lockdep.c:4900
       lock_acquire.part.0+0xf0/0x41c kernel/locking/lockdep.c:5510
       lock_acquire+0x6c/0x74 kernel/locking/lockdep.c:5483
       console_lock_spinning_enable kernel/printk/printk.c:1714 [inline]
       console_unlock+0x218/0x7c8 kernel/printk/printk.c:2573
       vprintk_emit+0x104/0x364 kernel/printk/printk.c:2098
       vprintk_default+0x28/0x30 kernel/printk/printk.c:2115
       vprintk_func+0xfc/0x1c4 kernel/printk/printk_safe.c:401
       printk+0x34/0x5c kernel/printk/printk.c:2146
       fail_dump lib/fault-inject.c:45 [inline]
       should_fail+0x184/0x1f4 lib/fault-inject.c:146
       __should_failslab+0x64/0x78 mm/failslab.c:33
       should_failslab+0x10/0x20 mm/slab_common.c:1273
       slab_pre_alloc_hook mm/slab.h:499 [inline]
       slab_alloc_node mm/slub.c:2826 [inline]
       slab_alloc mm/slub.c:2915 [inline]
       __kmalloc+0x78/0x35c mm/slub.c:4051
       kmalloc include/linux/slab.h:559 [inline]
       tty_buffer_alloc drivers/tty/tty_buffer.c:175 [inline]
       __tty_buffer_request_room+0x90/0x110 drivers/tty/tty_buffer.c:273
       tty_insert_flip_string_fixed_flag+0x44/0xc0 drivers/tty/tty_buffer.c:318
       tty_insert_flip_string include/linux/tty_flip.h:37 [inline]
       pty_write+0x60/0x88 drivers/tty/pty.c:121
       tty_put_char+0x44/0x4c drivers/tty/tty_io.c:3182
       __process_echoes+0x104/0x2cc drivers/tty/n_tty.c:724
       flush_echoes drivers/tty/n_tty.c:825 [inline]
       __receive_buf drivers/tty/n_tty.c:1644 [inline]
       n_tty_receive_buf_common+0x310/0xb58 drivers/tty/n_tty.c:1739
       n_tty_receive_buf+0x1c/0x24 drivers/tty/n_tty.c:1768
       tiocsti drivers/tty/tty_io.c:2316 [inline]
       tty_ioctl+0x968/0xc1c drivers/tty/tty_io.c:2717
       vfs_ioctl fs/ioctl.c:48 [inline]
       do_vfs_ioctl fs/ioctl.c:725 [inline]
       __do_sys_ioctl fs/ioctl.c:751 [inline]
       sys_ioctl+0x120/0xaa4 fs/ioctl.c:739
       ret_fast_syscall+0x0/0x2c arch/arm/mm/proc-v7.S:64
       0x76fe3038

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 ***

5 locks held by syz-executor.1/5492:
 #0: 86c9a454 (&tty->ldisc_sem){++++}-{0:0}, at: ldsem_down_read+0x38/0x3c drivers/tty/tty_ldsem.c:340
 #1: 86c9a58c (&o_tty->termios_rwsem/1){++++}-{3:3}, at: n_tty_receive_buf_common+0x5c/0xb58 drivers/tty/n_tty.c:1702
 #2: ec2b82dc (&ldata->output_lock){+.+.}-{3:3}, at: flush_echoes drivers/tty/n_tty.c:823 [inline]
 #2: ec2b82dc (&ldata->output_lock){+.+.}-{3:3}, at: __receive_buf drivers/tty/n_tty.c:1644 [inline]
 #2: ec2b82dc (&ldata->output_lock){+.+.}-{3:3}, at: n_tty_receive_buf_common+0x2fc/0xb58 drivers/tty/n_tty.c:1739
 #3: 86ccfac0 (&port->lock){....}-{2:2}, at: pty_write+0x44/0x88 drivers/tty/pty.c:119
 #4: 82a41150 (console_lock){+.+.}-{0:0}, at: vprintk_default+0x28/0x30 kernel/printk/printk.c:2115

stack backtrace:
CPU: 1 PID: 5492 Comm: syz-executor.1 Not tainted 5.12.0-rc3-syzkaller #0
Hardware name: ARM-Versatile Express
Backtrace: 
[<81802550>] (dump_backtrace) from [<818027c4>] (show_stack+0x18/0x1c arch/arm/kernel/traps.c:252)
 r7:00000080 r6:60000093 r5:00000000 r4:82b58344
[<818027ac>] (show_stack) from [<81809e98>] (__dump_stack lib/dump_stack.c:79 [inline])
[<818027ac>] (show_stack) from [<81809e98>] (dump_stack+0xb8/0xe8 lib/dump_stack.c:120)
[<81809de0>] (dump_stack) from [<802b97b4>] (print_circular_bug+0x308/0x35c kernel/locking/lockdep.c:2005)
 r7:86c5c7e8 r6:830dc4a4 r5:830e24bc r4:830cba3c
[<802b94ac>] (print_circular_bug) from [<802b990c>] (check_noncircular+0x104/0x170 kernel/locking/lockdep.c:2127)
 r10:00000005 r9:830cb7e4 r8:81f47d20 r7:00000000 r6:86689998 r5:86c5c7e8
 r4:86c5c828
[<802b9808>] (check_noncircular) from [<802bd4b4>] (check_prev_add kernel/locking/lockdep.c:2936 [inline])
[<802b9808>] (check_noncircular) from [<802bd4b4>] (check_prevs_add kernel/locking/lockdep.c:3059 [inline])
[<802b9808>] (check_noncircular) from [<802bd4b4>] (validate_chain kernel/locking/lockdep.c:3674 [inline])
[<802b9808>] (check_noncircular) from [<802bd4b4>] (__lock_acquire+0x182c/0x3318 kernel/locking/lockdep.c:4900)
 r7:83278fe8 r6:81f4cd38 r5:86c5c7e8 r4:830cba3c
[<802bbc88>] (__lock_acquire) from [<802bfb90>] (lock_acquire.part.0+0xf0/0x41c kernel/locking/lockdep.c:5510)
 r10:00000080 r9:60000093 r8:00000000 r7:00000000 r6:828a2680 r5:828a2680
 r4:86689a18
[<802bfaa0>] (lock_acquire.part.0) from [<802bff28>] (lock_acquire+0x6c/0x74 kernel/locking/lockdep.c:5483)
 r10:802d3f7c r9:00000000 r8:00000001 r7:00000000 r6:00000000 r5:00000000
 r4:82a41234
[<802bfebc>] (lock_acquire) from [<802d3ff8>] (console_lock_spinning_enable kernel/printk/printk.c:1714 [inline])
[<802bfebc>] (lock_acquire) from [<802d3ff8>] (console_unlock+0x218/0x7c8 kernel/printk/printk.c:2573)
 r10:86689b1c r9:83278a28 r8:81fa14e4 r7:82a410e0 r6:83278f58 r5:00000000
 r4:00000001
[<802d3de0>] (console_unlock) from [<802d5448>] (vprintk_emit+0x104/0x364 kernel/printk/printk.c:2098)
 r10:60000093 r9:ffffffff r8:81fa14e4 r7:0000005e r6:83278a28 r5:00000000
 r4:82a224f8
[<802d5344>] (vprintk_emit) from [<802d56d0>] (vprintk_default+0x28/0x30 kernel/printk/printk.c:2115)
 r10:00000100 r9:82a22980 r8:00000001 r7:00000000 r6:81fa14e4 r5:86689c64
 r4:00000000
[<802d56a8>] (vprintk_default) from [<802d6758>] (vprintk_func+0xfc/0x1c4 kernel/printk/printk_safe.c:401)
[<802d665c>] (vprintk_func) from [<81805fa8>] (printk+0x34/0x5c kernel/printk/printk.c:2146)
 r7:00000218 r6:00000a20 r5:00000a20 r4:82b25240
[<81805f74>] (printk) from [<80857258>] (fail_dump lib/fault-inject.c:45 [inline])
[<81805f74>] (printk) from [<80857258>] (should_fail+0x184/0x1f4 lib/fault-inject.c:146)
 r3:00000000 r2:00000001 r1:83e87b40 r0:81fa14e4
[<808570d4>] (should_fail) from [<804b8404>] (__should_failslab+0x64/0x78 mm/failslab.c:33)
 r5:00000a20 r4:83401540
[<804b83a0>] (__should_failslab) from [<8045b90c>] (should_failslab+0x10/0x20 mm/slab_common.c:1273)
[<8045b8fc>] (should_failslab) from [<804b4bc4>] (slab_pre_alloc_hook mm/slab.h:499 [inline])
[<8045b8fc>] (should_failslab) from [<804b4bc4>] (slab_alloc_node mm/slub.c:2826 [inline])
[<8045b8fc>] (should_failslab) from [<804b4bc4>] (slab_alloc mm/slub.c:2915 [inline])
[<8045b8fc>] (should_failslab) from [<804b4bc4>] (__kmalloc+0x78/0x35c mm/slub.c:4051)
[<804b4b4c>] (__kmalloc) from [<80947520>] (kmalloc include/linux/slab.h:559 [inline])
[<804b4b4c>] (__kmalloc) from [<80947520>] (tty_buffer_alloc drivers/tty/tty_buffer.c:175 [inline])
[<804b4b4c>] (__kmalloc) from [<80947520>] (__tty_buffer_request_room+0x90/0x110 drivers/tty/tty_buffer.c:273)
 r10:00000100 r9:00000000 r8:00000001 r7:00000000 r6:86ccfa78 r5:86ccfa00
 r4:00000001
[<80947490>] (__tty_buffer_request_room) from [<80947794>] (tty_insert_flip_string_fixed_flag+0x44/0xc0 drivers/tty/tty_buffer.c:318)
 r10:00000001 r9:00000001 r8:86ccfa00 r7:00000000 r6:86689d8f r5:20000013
 r4:00000001 r3:00000001
[<80947750>] (tty_insert_flip_string_fixed_flag) from [<8094b3bc>] (tty_insert_flip_string include/linux/tty_flip.h:37 [inline])
[<80947750>] (tty_insert_flip_string_fixed_flag) from [<8094b3bc>] (pty_write+0x60/0x88 drivers/tty/pty.c:121)
 r10:00002000 r9:86c9a400 r8:ec2b6000 r7:86c99c00 r6:86689d8f r5:20000013
 r4:00000001
[<8094b35c>] (pty_write) from [<8093c680>] (tty_put_char+0x44/0x4c drivers/tty/tty_io.c:3182)
 r7:ec2b8000 r6:00001244 r5:ec2b6000 r4:00000002
[<8093c63c>] (tty_put_char) from [<809417f4>] (__process_echoes+0x104/0x2cc drivers/tty/n_tty.c:724)
[<809416f0>] (__process_echoes) from [<8094468c>] (flush_echoes drivers/tty/n_tty.c:825 [inline])
[<809416f0>] (__process_echoes) from [<8094468c>] (__receive_buf drivers/tty/n_tty.c:1644 [inline])
[<809416f0>] (__process_echoes) from [<8094468c>] (n_tty_receive_buf_common+0x310/0xb58 drivers/tty/n_tty.c:1739)
 r10:00000000 r9:86c9a400 r8:ec2b6000 r7:00000001 r6:86689e75 r5:ec2b82a4
 r4:ec2b6000
[<8094437c>] (n_tty_receive_buf_common) from [<80944f14>] (n_tty_receive_buf+0x1c/0x24 drivers/tty/n_tty.c:1768)
 r10:86c9a400 r9:20000000 r8:00000009 r7:80944ef8 r6:86c9a400 r5:86ee5140
 r4:00000000
[<80944ef8>] (n_tty_receive_buf) from [<8093fe34>] (tiocsti drivers/tty/tty_io.c:2316 [inline])
[<80944ef8>] (n_tty_receive_buf) from [<8093fe34>] (tty_ioctl+0x968/0xc1c drivers/tty/tty_io.c:2717)
[<8093f4cc>] (tty_ioctl) from [<804f33f4>] (vfs_ioctl fs/ioctl.c:48 [inline])
[<8093f4cc>] (tty_ioctl) from [<804f33f4>] (do_vfs_ioctl fs/ioctl.c:725 [inline])
[<8093f4cc>] (tty_ioctl) from [<804f33f4>] (__do_sys_ioctl fs/ioctl.c:751 [inline])
[<8093f4cc>] (tty_ioctl) from [<804f33f4>] (sys_ioctl+0x120/0xaa4 fs/ioctl.c:739)
 r10:86184280 r9:00000005 r8:85887280 r7:20000000 r6:85887281 r5:00000000
 r4:00005412
[<804f32d4>] (sys_ioctl) from [<80200060>] (ret_fast_syscall+0x0/0x2c arch/arm/mm/proc-v7.S:64)
Exception stack(0x86689fa8 to 0x86689ff0)
9fa0:                   00000000 00000000 00000005 00005412 20000000 00000000
9fc0: 00000000 00000000 00000000 00000036 7ed3131a 76fe36d0 7ed314a4 76fe320c
9fe0: 76fe3048 76fe3038 00018e9c 0004ba40
 r10:00000036 r9:86688000 r8:80200224 r7:00000036 r6:00000000 r5:00000000
 r4:00000000