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+0x5e/0xd3
CPU: 0 PID: 1552 Comm: syz-executor.3 Not tainted 4.14.298-syzkaller #0
======================================================
WARNING: possible circular locking dependency detected
4.14.298-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor.5/1548 is trying to acquire lock:
(console_owner){....}, at: [<ffffffff814407c7>] log_next kernel/printk/printk.c:495 [inline]
(console_owner){....}, at: [<ffffffff814407c7>] console_unlock+0x307/0xf20 kernel/printk/printk.c:2396
but task is already holding lock:
(&(&port->lock)->rlock){-.-.}, at: [<ffffffff8355f86b>] tty_insert_flip_string_and_push_buffer+0x2b/0x160 drivers/tty/tty_buffer.c:569
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/0xc70 drivers/tty/serial/8250/8250_port.c:1828
serial8250_handle_irq.part.0+0x28d/0x330 drivers/tty/serial/8250/8250_port.c:1915
serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1888 [inline]
serial8250_default_handle_irq+0x8a/0x1f0 drivers/tty/serial/8250/8250_port.c:1931
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+0xed/0x240 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
-> #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+0x8cb/0xb40 drivers/tty/serial/8250/8250_port.c:3278
call_console_drivers kernel/printk/printk.c:1727 [inline]
console_unlock+0x99d/0xf20 kernel/printk/printk.c:2409
vprintk_emit+0x224/0x620 kernel/printk/printk.c:1925
vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
printk+0x9e/0xbc kernel/printk/printk.c:1998
register_console+0x6f4/0xad0 kernel/printk/printk.c:2728
univ8250_console_init+0x2f/0x3a drivers/tty/serial/8250/8250_core.c:691
console_init+0x46/0x53 kernel/printk/printk.c:2809
start_kernel+0x521/0x763 init/main.c:638
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_lock_spinning_enable kernel/printk/printk.c:1590 [inline]
console_unlock+0x36f/0xf20 kernel/printk/printk.c:2406
vprintk_emit+0x224/0x620 kernel/printk/printk.c:1925
vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
printk+0x9e/0xbc kernel/printk/printk.c:1998
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:268
tty_insert_flip_string_fixed_flag+0x8b/0x210 drivers/tty/tty_buffer.c:313
tty_insert_flip_string include/linux/tty_flip.h:36 [inline]
tty_insert_flip_string_and_push_buffer+0x3e/0x160 drivers/tty/tty_buffer.c:570
pty_write+0xc3/0xf0 drivers/tty/pty.c:118
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/0x1430 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+0x5e/0xd3
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 ***
5 locks held by syz-executor.5/1548:
#0: (&tty->ldisc_sem){++++}, at: [<ffffffff8355bce2>] tty_ldisc_ref_wait+0x22/0x80 drivers/tty/tty_ldisc.c:284
#1: (&tty->atomic_write_lock){+.+.}, at: [<ffffffff8354abb5>] tty_write_lock drivers/tty/tty_io.c:885 [inline]
#1: (&tty->atomic_write_lock){+.+.}, at: [<ffffffff8354abb5>] tty_send_xchar+0x1b5/0x360 drivers/tty/tty_io.c:1086
#2: (&tty->termios_rwsem){++++}, at: [<ffffffff8354abe8>] tty_send_xchar+0x1e8/0x360 drivers/tty/tty_io.c:1089
#3: (&(&port->lock)->rlock){-.-.}, at: [<ffffffff8355f86b>] tty_insert_flip_string_and_push_buffer+0x2b/0x160 drivers/tty/tty_buffer.c:569
#4: (console_lock){+.+.}, at: [<ffffffff81444128>] vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
stack backtrace:
CPU: 1 PID: 1548 Comm: syz-executor.5 Not tainted 4.14.298-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
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_lock_spinning_enable kernel/printk/printk.c:1590 [inline]
console_unlock+0x36f/0xf20 kernel/printk/printk.c:2406
vprintk_emit+0x224/0x620 kernel/printk/printk.c:1925
vprintk_func+0x58/0x160 kernel/printk/printk_safe.c:409
printk+0x9e/0xbc kernel/printk/printk.c:1998
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:268
tty_insert_flip_string_fixed_flag+0x8b/0x210 drivers/tty/tty_buffer.c:313
tty_insert_flip_string include/linux/tty_flip.h:36 [inline]
tty_insert_flip_string_and_push_buffer+0x3e/0x160 drivers/tty/tty_buffer.c:570
pty_write+0xc3/0xf0 drivers/tty/pty.c:118
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/0x1430 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+0x5e/0xd3
FAULT_INJECTION: forcing a failure.
name failslab, interval 1, probability 0, space 0, times 0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
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_trace+0x29a/0x3d0 mm/slab.c:3616
kmalloc include/linux/slab.h:488 [inline]
snd_card_file_add+0x4e/0x2f0 sound/core/init.c:909
snd_pcm_open sound/core/pcm_native.c:2553 [inline]
snd_pcm_capture_open sound/core/pcm_native.c:2538 [inline]
snd_pcm_capture_open+0x9e/0x120 sound/core/pcm_native.c:2530
snd_open+0x1f7/0x3e0 sound/core/sound.c:175
chrdev_open+0x23c/0x6d0 fs/char_dev.c:423
do_dentry_open+0x44b/0xec0 fs/open.c:777
vfs_open+0x105/0x220 fs/open.c:888
do_last fs/namei.c:3428 [inline]
path_openat+0x628/0x2970 fs/namei.c:3571
do_filp_open+0x179/0x3c0 fs/namei.c:3605
do_sys_open+0x296/0x410 fs/open.c:1081
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
CPU: 1 PID: 1550 Comm: syz-executor.4 Not tainted 4.14.298-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
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]
__do_kmalloc mm/slab.c:3718 [inline]
__kmalloc+0x2c1/0x400 mm/slab.c:3729
kmalloc_array include/linux/slab.h:607 [inline]
kcalloc include/linux/slab.h:618 [inline]
snd_pcm_hw_rule_add+0x34e/0x600 sound/core/pcm_lib.c:1139
snd_pcm_hw_constraints_init+0x6ac/0xad0 sound/core/pcm_native.c:2312
snd_pcm_open_substream+0x107/0x3b0 sound/core/pcm_native.c:2463
snd_pcm_open_file sound/core/pcm_native.c:2497 [inline]
snd_pcm_open.part.0+0x1d8/0x5b0 sound/core/pcm_native.c:2564
snd_pcm_open sound/core/pcm_native.c:2554 [inline]
snd_pcm_capture_open sound/core/pcm_native.c:2538 [inline]
snd_pcm_capture_open+0xba/0x120 sound/core/pcm_native.c:2530
snd_open+0x1f7/0x3e0 sound/core/sound.c:175
chrdev_open+0x23c/0x6d0 fs/char_dev.c:423
do_dentry_open+0x44b/0xec0 fs/open.c:777
vfs_open+0x105/0x220 fs/open.c:888
do_last fs/namei.c:3428 [inline]
path_openat+0x628/0x2970 fs/namei.c:3571
do_filp_open+0x179/0x3c0 fs/namei.c:3605
do_sys_open+0x296/0x410 fs/open.c:1081
do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
entry_SYSCALL_64_after_hwframe+0x5e/0xd3
audit: type=1800 audit(1667573310.594:2): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:3): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:4): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:5): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:6): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:7): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:8): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:9): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:10): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
audit: type=1800 audit(1667573310.594:11): pid=2972 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.0" name=0F dev="sda1" ino=15248 res=0
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first
uinput: write device info first