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