============================================ WARNING: possible recursive locking detected 5.16.0-rc5-next-20211216-syzkaller #0 Not tainted -------------------------------------------- syz-executor889/3861 is trying to acquire lock: ffff888075982130 (&runtime->sleep){..-.}-{2:2}, at: io_poll_double_wake+0x2c3/0x7e0 fs/io_uring.c:5549 fs/io_uring.c:5549 but task is already holding lock: ffff888075984130 (&runtime->sleep){..-.}-{2:2}, at: __wake_up_common_lock+0xb4/0x130 kernel/sched/wait.c:137 kernel/sched/wait.c:137 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&runtime->sleep); lock(&runtime->sleep); *** DEADLOCK *** May be due to missing lock nesting notation 3 locks held by syz-executor889/3861: #0: ffff88823bddcbd8 (&ctx->completion_lock){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:354 [inline] #0: ffff88823bddcbd8 (&ctx->completion_lock){+.+.}-{2:2}, at: spin_lock include/linux/spinlock.h:354 [inline] fs/io_uring.c:5827 #0: ffff88823bddcbd8 (&ctx->completion_lock){+.+.}-{2:2}, at: io_poll_remove_all+0x3c/0x214 fs/io_uring.c:5827 fs/io_uring.c:5827 #1: ffff88814accf110 (&group->lock){..-.}-{2:2}, at: _snd_pcm_stream_lock_irqsave+0x9f/0xd0 sound/core/pcm_native.c:170 sound/core/pcm_native.c:170 #2: ffff888075984130 (&runtime->sleep){..-.}-{2:2}, at: __wake_up_common_lock+0xb4/0x130 kernel/sched/wait.c:137 kernel/sched/wait.c:137 stack backtrace: CPU: 0 PID: 3861 Comm: syz-executor889 Not tainted 5.16.0-rc5-next-20211216-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 lib/dump_stack.c:88 [inline] lib/dump_stack.c:106 dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 lib/dump_stack.c:106 print_deadlock_bug kernel/locking/lockdep.c:2956 [inline] check_deadlock kernel/locking/lockdep.c:2999 [inline] validate_chain kernel/locking/lockdep.c:3788 [inline] print_deadlock_bug kernel/locking/lockdep.c:2956 [inline] kernel/locking/lockdep.c:5027 check_deadlock kernel/locking/lockdep.c:2999 [inline] kernel/locking/lockdep.c:5027 validate_chain kernel/locking/lockdep.c:3788 [inline] kernel/locking/lockdep.c:5027 __lock_acquire.cold+0x149/0x3ab kernel/locking/lockdep.c:5027 kernel/locking/lockdep.c:5027 lock_acquire kernel/locking/lockdep.c:5639 [inline] lock_acquire kernel/locking/lockdep.c:5639 [inline] kernel/locking/lockdep.c:5604 lock_acquire+0x1ab/0x510 kernel/locking/lockdep.c:5604 kernel/locking/lockdep.c:5604 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] kernel/locking/spinlock.c:162 _raw_spin_lock_irqsave+0x39/0x50 kernel/locking/spinlock.c:162 kernel/locking/spinlock.c:162 io_poll_double_wake+0x2c3/0x7e0 fs/io_uring.c:5549 fs/io_uring.c:5549 __wake_up_common+0x147/0x650 kernel/sched/wait.c:108 kernel/sched/wait.c:108 __wake_up_common_lock+0xd0/0x130 kernel/sched/wait.c:138 kernel/sched/wait.c:138 snd_pcm_update_state+0x46a/0x540 sound/core/pcm_lib.c:204 sound/core/pcm_lib.c:204 snd_pcm_update_hw_ptr0+0xa75/0x1a50 sound/core/pcm_lib.c:465 sound/core/pcm_lib.c:465 snd_pcm_period_elapsed_under_stream_lock+0x15a/0x230 sound/core/pcm_lib.c:1817 sound/core/pcm_lib.c:1817 snd_pcm_period_elapsed+0x28/0x50 sound/core/pcm_lib.c:1849 sound/core/pcm_lib.c:1849 dummy_hrtimer_callback+0x94/0x1b0 sound/drivers/dummy.c:377 sound/drivers/dummy.c:377 __run_hrtimer kernel/time/hrtimer.c:1685 [inline] __run_hrtimer kernel/time/hrtimer.c:1685 [inline] kernel/time/hrtimer.c:1749 __hrtimer_run_queues+0x609/0xe50 kernel/time/hrtimer.c:1749 kernel/time/hrtimer.c:1749 hrtimer_run_softirq+0x17b/0x360 kernel/time/hrtimer.c:1766 kernel/time/hrtimer.c:1766 __do_softirq+0x29b/0x9c2 kernel/softirq.c:558 kernel/softirq.c:558 invoke_softirq kernel/softirq.c:432 [inline] invoke_softirq kernel/softirq.c:432 [inline] kernel/softirq.c:637 __irq_exit_rcu+0x123/0x180 kernel/softirq.c:637 kernel/softirq.c:637 irq_exit_rcu+0x5/0x20 kernel/softirq.c:649 kernel/softirq.c:649 sysvec_apic_timer_interrupt+0x93/0xc0 arch/x86/kernel/apic/apic.c:1097 arch/x86/kernel/apic/apic.c:1097 asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:638 arch/x86/include/asm/idtentry.h:638 RIP: 0010:__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline] RIP: 0010:__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline] kernel/locking/spinlock.c:194 RIP: 0010:_raw_spin_unlock_irqrestore+0x38/0x70 kernel/locking/spinlock.c:194 kernel/locking/spinlock.c:194 Code: 74 24 10 e8 0a 41 05 f8 48 89 ef e8 52 b7 05 f8 81 e3 00 02 00 00 75 25 9c 58 f6 c4 02 75 2d 48 85 db 74 01 fb bf 01 00 00 00 b3 6e f8 f7 65 8b 05 ec ca aa 76 85 c0 74 0a 5b 5d c3 e8 20 a5 RSP: 0018:ffffc90002d5f920 EFLAGS: 00000206 RAX: 0000000000000002 RBX: 0000000000000200 RCX: 1ffffffff1ffe62e RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000001 RBP: ffff888071a9bd20 R08: 0000000000000001 R09: ffffffff8ffa7a0f R10: 0000000000000001 R11: 0000000000000000 R12: ffff888071a9bd90 R13: 0000000000000001 R14: ffff8880137e0000 R15: ffff888071a9bd20 spin_unlock_irqrestore include/linux/spinlock.h:409 [inline] spin_unlock_irqrestore include/linux/spinlock.h:409 [inline] fs/io_uring.c:2375 io_req_task_work_add+0x1a2/0x720 fs/io_uring.c:2375 fs/io_uring.c:2375 io_put_req_deferred fs/io_uring.c:2555 [inline] io_put_req_deferred fs/io_uring.c:2551 [inline] io_poll_remove_one fs/io_uring.c:5812 [inline] io_put_req_deferred fs/io_uring.c:2555 [inline] fs/io_uring.c:5800 io_put_req_deferred fs/io_uring.c:2551 [inline] fs/io_uring.c:5800 io_poll_remove_one fs/io_uring.c:5812 [inline] fs/io_uring.c:5800 io_poll_remove_one+0x4bf/0x870 fs/io_uring.c:5800 fs/io_uring.c:5800 io_poll_remove_all+0x198/0x214 fs/io_uring.c:5834 fs/io_uring.c:5834 io_ring_ctx_wait_and_kill+0x1cc/0x322 fs/io_uring.c:9664 fs/io_uring.c:9664 io_uring_release+0x42/0x46 fs/io_uring.c:9684 fs/io_uring.c:9684 __fput+0x286/0x9f0 fs/file_table.c:311 fs/file_table.c:311 task_work_run+0xdd/0x1a0 kernel/task_work.c:164 kernel/task_work.c:164 exit_task_work include/linux/task_work.h:32 [inline] exit_task_work include/linux/task_work.h:32 [inline] kernel/exit.c:832 do_exit+0xc14/0x2c20 kernel/exit.c:832 kernel/exit.c:832 do_group_exit+0x125/0x310 kernel/exit.c:929 kernel/exit.c:929 get_signal+0x34c/0x28b0 kernel/signal.c:2859 kernel/signal.c:2859 arch_do_signal_or_restart+0x2a9/0x1c40 arch/x86/kernel/signal.c:868 arch/x86/kernel/signal.c:868 handle_signal_work kernel/entry/common.c:148 [inline] exit_to_user_mode_loop kernel/entry/common.c:172 [inline] handle_signal_work kernel/entry/common.c:148 [inline] kernel/entry/common.c:207 exit_to_user_mode_loop kernel/entry/common.c:172 [inline] kernel/entry/common.c:207 exit_to_user_mode_prepare+0x17d/0x290 kernel/entry/common.c:207 kernel/entry/common.c:207 __syscall_exit_to_user_mode_work kernel/entry/common.c:289 [inline] __syscall_exit_to_user_mode_work kernel/entry/common.c:289 [inline] kernel/entry/common.c:300 syscall_exit_to_user_mode+0x19/0x60 kernel/entry/common.c:300 kernel/entry/common.c:300 do_syscall_64+0x42/0xb0 arch/x86/entry/common.c:86 arch/x86/entry/common.c:86 entry_SYSCALL_64_after_hwframe+0x44/0xae RIP: 0033:0x7fad1cac0ca9 Code: Unable to access opcode bytes at RIP 0x7fad1cac0c7f. RSP: 002b:00007fad1ca722e8 EFLAGS: 00000246 ORIG_RAX: 00000000000001aa RAX: 0000000000000100 RBX: 00007fad1cb48428 RCX: 00007fad1cac0ca9 RDX: 0000000000000000 RSI: 0000000000002039 RDI: 0000000000000004 RBP: 00007fad1cb48420 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00007fad1cb4842c R13: 00007fad1cb16074 R14: 7073642f7665642f R15: 0000000000000004 ---------------- Code disassembly (best guess): 0: 74 24 je 0x26 2: 10 e8 adc %ch,%al 4: 0a 41 05 or 0x5(%rcx),%al 7: f8 clc 8: 48 89 ef mov %rbp,%rdi b: e8 52 b7 05 f8 callq 0xf805b762 10: 81 e3 00 02 00 00 and $0x200,%ebx 16: 75 25 jne 0x3d 18: 9c pushfq 19: 58 pop %rax 1a: f6 c4 02 test $0x2,%ah 1d: 75 2d jne 0x4c 1f: 48 85 db test %rbx,%rbx 22: 74 01 je 0x25 24: fb sti 25: bf 01 00 00 00 mov $0x1,%edi * 2a: e8 b3 6e f8 f7 callq 0xf7f86ee2 <-- trapping instruction 2f: 65 8b 05 ec ca aa 76 mov %gs:0x76aacaec(%rip),%eax # 0x76aacb22 36: 85 c0 test %eax,%eax 38: 74 0a je 0x44 3a: 5b pop %rbx 3b: 5d pop %rbp 3c: c3 retq 3d: e8 .byte 0xe8 3e: 20 .byte 0x20 3f: a5 movsl %ds:(%rsi),%es:(%rdi) ---------------- Code disassembly (best guess): 0: 74 24 je 0x26 2: 10 e8 adc %ch,%al 4: 0a 41 05 or 0x5(%rcx),%al 7: f8 clc 8: 48 89 ef mov %rbp,%rdi b: e8 52 b7 05 f8 callq 0xf805b762 10: 81 e3 00 02 00 00 and $0x200,%ebx 16: 75 25 jne 0x3d 18: 9c pushfq 19: 58 pop %rax 1a: f6 c4 02 test $0x2,%ah 1d: 75 2d jne 0x4c 1f: 48 85 db test %rbx,%rbx 22: 74 01 je 0x25 24: fb sti 25: bf 01 00 00 00 mov $0x1,%edi * 2a: e8 b3 6e f8 f7 callq 0xf7f86ee2 <-- trapping instruction 2f: 65 8b 05 ec ca aa 76 mov %gs:0x76aacaec(%rip),%eax # 0x76aacb22 36: 85 c0 test %eax,%eax 38: 74 0a je 0x44 3a: 5b pop %rbx 3b: 5d pop %rbp 3c: c3 retq 3d: e8 .byte 0xe8 3e: 20 .byte 0x20 3f: a5 movsl %ds:(%rsi),%es:(%rdi)