RDX: 0000000000000002 RSI: 000000000000540a RDI: 0000000000000003
RBP: 00007f258a4181d0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 00007ffed47cb95f R14: 00007f258a418300 R15: 0000000000022000
======================================================
WARNING: possible circular locking dependency detected
4.14.232-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor.2/17825 is trying to acquire lock:
 (console_owner){....}, at: [<ffffffff8143f00a>] console_trylock_spinning kernel/printk/printk.c:1658 [inline]
 (console_owner){....}, at: [<ffffffff8143f00a>] vprintk_emit+0x32a/0x620 kernel/printk/printk.c:1922

but task is already holding lock:
 (&(&port->lock)->rlock){-.-.}, at: [<ffffffff8355543b>] pty_write+0xdb/0x1d0 drivers/tty/pty.c:120

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&(&port->lock)->rlock){-.-.}:
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:160
       tty_port_tty_get+0x1d/0x80 drivers/tty/tty_port.c:288
       tty_port_default_wakeup+0x11/0x40 drivers/tty/tty_port.c:46
       serial8250_tx_chars+0x3fe/0xbf0 drivers/tty/serial/8250/8250_port.c:1810
       serial8250_handle_irq.part.0+0x28d/0x330 drivers/tty/serial/8250/8250_port.c:1897
       serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1870 [inline]
       serial8250_default_handle_irq+0x8a/0x1f0 drivers/tty/serial/8250/8250_port.c:1913
       serial8250_interrupt+0xf3/0x210 drivers/tty/serial/8250/8250_core.c:129
       __handle_irq_event_percpu+0xee/0x7f0 kernel/irq/handle.c:147
       handle_irq_event_percpu kernel/irq/handle.c:187 [inline]
       handle_irq_event+0xf0/0x250 kernel/irq/handle.c:204
       handle_edge_irq+0x224/0xc40 kernel/irq/chip.c:770
       generic_handle_irq_desc include/linux/irqdesc.h:159 [inline]
       handle_irq+0x35/0x50 arch/x86/kernel/irq_64.c:87
       do_IRQ+0x93/0x1d0 arch/x86/kernel/irq.c:230
       ret_from_intr+0x0/0x1e
       native_safe_halt+0xe/0x10 arch/x86/include/asm/irqflags.h:60
       arch_safe_halt arch/x86/include/asm/paravirt.h:94 [inline]
       default_idle+0x47/0x370 arch/x86/kernel/process.c:558
       cpuidle_idle_call kernel/sched/idle.c:156 [inline]
       do_idle+0x250/0x3c0 kernel/sched/idle.c:246
       cpu_startup_entry+0x14/0x20 kernel/sched/idle.c:351
       start_secondary+0x4db/0x670 arch/x86/kernel/smpboot.c:272
       secondary_startup_64+0xa5/0xb0 arch/x86/kernel/head_64.S:240

-> #1 (&port_lock_key){-.-.}:
       __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
       _raw_spin_lock_irqsave+0x8c/0xc0 kernel/locking/spinlock.c:160
       serial8250_console_write+0x7a7/0x9d0 drivers/tty/serial/8250/8250_port.c:3253
       call_console_drivers kernel/printk/printk.c:1725 [inline]
       console_unlock+0x99d/0xf20 kernel/printk/printk.c:2400
       vprintk_emit+0x224/0x620 kernel/printk/printk.c:1923
       vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
       printk+0x9e/0xbc kernel/printk/printk.c:1996
       register_console+0x6f4/0xad0 kernel/printk/printk.c:2719
       univ8250_console_init+0x2f/0x3a drivers/tty/serial/8250/8250_core.c:691
       console_init+0x46/0x53 kernel/printk/printk.c:2800
       start_kernel+0x52e/0x770 init/main.c:634
       secondary_startup_64+0xa5/0xb0 arch/x86/kernel/head_64.S:240

-> #0 (console_owner){....}:
       lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
       console_trylock_spinning kernel/printk/printk.c:1679 [inline]
       vprintk_emit+0x367/0x620 kernel/printk/printk.c:1922
       vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
       printk+0x9e/0xbc kernel/printk/printk.c:1996
       fail_dump lib/fault-inject.c:44 [inline]
       should_fail.cold+0xdf/0x149 lib/fault-inject.c:149
       should_failslab+0xd6/0x130 mm/failslab.c:32
       slab_pre_alloc_hook mm/slab.h:421 [inline]
       slab_alloc mm/slab.c:3376 [inline]
       __do_kmalloc mm/slab.c:3718 [inline]
       __kmalloc+0x6d/0x400 mm/slab.c:3729
       kmalloc include/linux/slab.h:493 [inline]
       tty_buffer_alloc+0xc0/0x270 drivers/tty/tty_buffer.c:169
       __tty_buffer_request_room+0x12c/0x290 drivers/tty/tty_buffer.c:267
       tty_insert_flip_string_fixed_flag+0x8b/0x210 drivers/tty/tty_buffer.c:312
       tty_insert_flip_string include/linux/tty_flip.h:37 [inline]
       pty_write+0x10d/0x1d0 drivers/tty/pty.c:122
       tty_send_xchar+0x245/0x360 drivers/tty/tty_io.c:1092
       n_tty_ioctl_helper+0x145/0x350 drivers/tty/tty_ioctl.c:926
       n_tty_ioctl+0x47/0x2e0 drivers/tty/n_tty.c:2466
       tty_ioctl+0x5af/0x13c0 drivers/tty/tty_io.c:2670
       vfs_ioctl fs/ioctl.c:46 [inline]
       file_ioctl fs/ioctl.c:500 [inline]
       do_vfs_ioctl+0x75a/0xff0 fs/ioctl.c:684
       SYSC_ioctl fs/ioctl.c:701 [inline]
       SyS_ioctl+0x7f/0xb0 fs/ioctl.c:692
       do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
       entry_SYSCALL_64_after_hwframe+0x46/0xbb

other info that might help us debug this:

Chain exists of:
  console_owner --> &port_lock_key --> &(&port->lock)->rlock

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&(&port->lock)->rlock);
                               lock(&port_lock_key);
                               lock(&(&port->lock)->rlock);
  lock(console_owner);

 *** DEADLOCK ***

4 locks held by syz-executor.2/17825:
 #0:  (&tty->ldisc_sem){++++}, at: [<ffffffff83549622>] tty_ldisc_ref_wait+0x22/0x80 drivers/tty/tty_ldisc.c:284
 #1:  (&tty->atomic_write_lock){+.+.}, at: [<ffffffff835384f5>] tty_write_lock drivers/tty/tty_io.c:885 [inline]
 #1:  (&tty->atomic_write_lock){+.+.}, at: [<ffffffff835384f5>] tty_send_xchar+0x1b5/0x360 drivers/tty/tty_io.c:1086
 #2:  (&tty->termios_rwsem){++++}, at: [<ffffffff83538528>] tty_send_xchar+0x1e8/0x360 drivers/tty/tty_io.c:1089
 #3:  (&(&port->lock)->rlock){-.-.}, at: [<ffffffff8355543b>] pty_write+0xdb/0x1d0 drivers/tty/pty.c:120

stack backtrace:
CPU: 1 PID: 17825 Comm: syz-executor.2 Not tainted 4.14.232-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x1b2/0x281 lib/dump_stack.c:58
 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258
 check_prev_add kernel/locking/lockdep.c:1905 [inline]
 check_prevs_add kernel/locking/lockdep.c:2022 [inline]
 validate_chain kernel/locking/lockdep.c:2464 [inline]
 __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491
 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
 console_trylock_spinning kernel/printk/printk.c:1679 [inline]
 vprintk_emit+0x367/0x620 kernel/printk/printk.c:1922
 vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
 printk+0x9e/0xbc kernel/printk/printk.c:1996
 fail_dump lib/fault-inject.c:44 [inline]
 should_fail.cold+0xdf/0x149 lib/fault-inject.c:149
 should_failslab+0xd6/0x130 mm/failslab.c:32
 slab_pre_alloc_hook mm/slab.h:421 [inline]
 slab_alloc mm/slab.c:3376 [inline]
 __do_kmalloc mm/slab.c:3718 [inline]
 __kmalloc+0x6d/0x400 mm/slab.c:3729
 kmalloc include/linux/slab.h:493 [inline]
 tty_buffer_alloc+0xc0/0x270 drivers/tty/tty_buffer.c:169
 __tty_buffer_request_room+0x12c/0x290 drivers/tty/tty_buffer.c:267
 tty_insert_flip_string_fixed_flag+0x8b/0x210 drivers/tty/tty_buffer.c:312
 tty_insert_flip_string include/linux/tty_flip.h:37 [inline]
 pty_write+0x10d/0x1d0 drivers/tty/pty.c:122
 tty_send_xchar+0x245/0x360 drivers/tty/tty_io.c:1092
 n_tty_ioctl_helper+0x145/0x350 drivers/tty/tty_ioctl.c:926
 n_tty_ioctl+0x47/0x2e0 drivers/tty/n_tty.c:2466
 tty_ioctl+0x5af/0x13c0 drivers/tty/tty_io.c:2670
CPU: 0 PID: 17824 Comm: syz-executor.1 Not tainted 4.14.232-syzkaller #0
 vfs_ioctl fs/ioctl.c:46 [inline]
 file_ioctl fs/ioctl.c:500 [inline]
 do_vfs_ioctl+0x75a/0xff0 fs/ioctl.c:684
 SYSC_ioctl fs/ioctl.c:701 [inline]
 SyS_ioctl+0x7f/0xb0 fs/ioctl.c:692
 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
 entry_SYSCALL_64_after_hwframe+0x46/0xbb
RIP: 0033:0x4665d9
RSP: 002b:00007f258a418188 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 000000000056bf60 RCX: 00000000004665d9
RDX: 0000000000000002 RSI: 000000000000540a RDI: 0000000000000003
RBP: 00007f258a4181d0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 00007ffed47cb95f R14: 00007f258a418300 R15: 0000000000022000
can: request_module (can-proto-0) failed.
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
can: request_module (can-proto-0) failed.
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x1b2/0x281 lib/dump_stack.c:58
 fail_dump lib/fault-inject.c:51 [inline]
 should_fail.cold+0x10a/0x149 lib/fault-inject.c:149
 should_failslab+0xd6/0x130 mm/failslab.c:32
 slab_pre_alloc_hook mm/slab.h:421 [inline]
 slab_alloc mm/slab.c:3376 [inline]
 kmem_cache_alloc+0x28e/0x3c0 mm/slab.c:3550
 sock_alloc_inode+0x19/0x250 net/socket.c:251
 alloc_inode+0x5d/0x170 fs/inode.c:210
 new_inode_pseudo+0x14/0xe0 fs/inode.c:899
 sock_alloc+0x3c/0x270 net/socket.c:569
 __sock_create+0x8a/0x620 net/socket.c:1239
 sock_create net/socket.c:1315 [inline]
 SYSC_socketpair net/socket.c:1387 [inline]
 SyS_socketpair+0xdf/0x480 net/socket.c:1366
 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
 entry_SYSCALL_64_after_hwframe+0x46/0xbb
RIP: 0033:0x4665d9
RSP: 002b:00007f13f9453188 EFLAGS: 00000246 ORIG_RAX: 0000000000000035
RAX: ffffffffffffffda RBX: 000000000056bf60 RCX: 00000000004665d9
RDX: 0000000000000002 RSI: 0000000000000002 RDI: 000000000000001d
RBP: 00007f13f94531d0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 00007ffd150d5ecf R14: 00007f13f9453300 R15: 0000000000022000
CPU: 1 PID: 17827 Comm: syz-executor.5 Not tainted 4.14.232-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x1b2/0x281 lib/dump_stack.c:58
 fail_dump lib/fault-inject.c:51 [inline]
 should_fail.cold+0x10a/0x149 lib/fault-inject.c:149
 should_failslab+0xd6/0x130 mm/failslab.c:32
 slab_pre_alloc_hook mm/slab.h:421 [inline]
 slab_alloc mm/slab.c:3376 [inline]
 kmem_cache_alloc+0x28e/0x3c0 mm/slab.c:3550
 sock_alloc_inode+0x19/0x250 net/socket.c:251
 alloc_inode+0x5d/0x170 fs/inode.c:210
 new_inode_pseudo+0x14/0xe0 fs/inode.c:899
 sock_alloc+0x3c/0x270 net/socket.c:569
 __sock_create+0x8a/0x620 net/socket.c:1239
 sock_create net/socket.c:1315 [inline]
 SYSC_socketpair net/socket.c:1387 [inline]
 SyS_socketpair+0xdf/0x480 net/socket.c:1366
 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
 entry_SYSCALL_64_after_hwframe+0x46/0xbb
RIP: 0033:0x4665d9
RSP: 002b:00007ff49700f188 EFLAGS: 00000246 ORIG_RAX: 0000000000000035
RAX: ffffffffffffffda RBX: 000000000056bf60 RCX: 00000000004665d9
RDX: 0000000000000002 RSI: 0000000000000002 RDI: 000000000000001d
RBP: 00007ff49700f1d0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 00007ffe4762a37f R14: 00007ff49700f300 R15: 0000000000022000
socket: no more sockets
socket: no more sockets
can_create: 13 callbacks suppressed
can: request_module (can-proto-0) failed.
can: request_module (can-proto-0) failed.
can: request_module (can-proto-0) failed.
syz-executor.5 uses obsolete (PF_INET,SOCK_PACKET)