======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Tainted: G L
------------------------------------------------------
syz.0.219/6825 is trying to acquire lock:
ffff888023de0c68 (&pipe->mutex){+.+.}-{4:4}, at: anon_pipe_write+0x15d/0x1bd0 fs/pipe.c:458
but task is already holding lock:
ffff8880121b9948 (&sbi->pipe_mutex){+.+.}-{4:4}, at: autofs_write fs/autofs/waitq.c:55 [inline]
ffff8880121b9948 (&sbi->pipe_mutex){+.+.}-{4:4}, at: autofs_notify_daemon+0x4a6/0xd60 fs/autofs/waitq.c:164
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (&sbi->pipe_mutex){+.+.}-{4:4}:
__mutex_lock_common kernel/locking/mutex.c:614 [inline]
__mutex_lock+0x1aa/0x1ca0 kernel/locking/mutex.c:776
autofs_write fs/autofs/waitq.c:55 [inline]
autofs_notify_daemon+0x4a6/0xd60 fs/autofs/waitq.c:164
autofs_wait+0x10f3/0x1ac0 fs/autofs/waitq.c:426
autofs_mount_wait+0x132/0x3c0 fs/autofs/root.c:255
autofs_d_automount+0x4b2/0x960 fs/autofs/root.c:409
follow_automount fs/namei.c:1499 [inline]
__traverse_mounts+0x1b9/0x830 fs/namei.c:1552
traverse_mounts fs/namei.c:1581 [inline]
handle_mounts fs/namei.c:1686 [inline]
step_into_slowpath+0x772/0xf50 fs/namei.c:2043
step_into fs/namei.c:2091 [inline]
walk_component fs/namei.c:2227 [inline]
lookup_last fs/namei.c:2722 [inline]
path_lookupat+0x627/0xc40 fs/namei.c:2746
filename_lookup+0x224/0x5f0 fs/namei.c:2775
kern_path+0x35/0x50 fs/namei.c:2987
lookup_bdev+0xd8/0x280 block/bdev.c:1222
resume_store+0x1d6/0x490 kernel/power/hibernate.c:1306
kobj_attr_store+0x58/0x80 lib/kobject.c:840
sysfs_kf_write+0xf2/0x150 fs/sysfs/file.c:142
kernfs_fop_write_iter+0x3af/0x570 fs/kernfs/file.c:352
new_sync_write fs/read_write.c:593 [inline]
vfs_write+0x7d3/0x11d0 fs/read_write.c:686
ksys_write+0x12a/0x250 fs/read_write.c:738
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
-> #2 (&of->mutex){+.+.}-{4:4}:
__mutex_lock_common kernel/locking/mutex.c:614 [inline]
__mutex_lock+0x1aa/0x1ca0 kernel/locking/mutex.c:776
kernfs_seq_start+0x4f/0x2a0 fs/kernfs/file.c:172
seq_read_iter+0x2c1/0x12d0 fs/seq_file.c:225
kernfs_fop_read_iter+0x46c/0x610 fs/kernfs/file.c:297
copy_splice_read+0x618/0xc20 fs/splice.c:363
do_splice_read fs/splice.c:982 [inline]
do_splice_read+0x285/0x370 fs/splice.c:956
splice_file_to_pipe+0x109/0x120 fs/splice.c:1292
do_sendfile+0x400/0xe50 fs/read_write.c:1376
__do_sys_sendfile64 fs/read_write.c:1431 [inline]
__se_sys_sendfile64 fs/read_write.c:1417 [inline]
__ia32_sys_sendfile64+0x1d7/0x220 fs/read_write.c:1417
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
-> #1 (&p->lock){+.+.}-{4:4}:
__mutex_lock_common kernel/locking/mutex.c:614 [inline]
__mutex_lock+0x1aa/0x1ca0 kernel/locking/mutex.c:776
seq_read_iter+0xe1/0x12d0 fs/seq_file.c:182
kernfs_fop_read_iter+0x46c/0x610 fs/kernfs/file.c:297
copy_splice_read+0x618/0xc20 fs/splice.c:363
do_splice_read fs/splice.c:982 [inline]
do_splice_read+0x285/0x370 fs/splice.c:956
splice_file_to_pipe+0x109/0x120 fs/splice.c:1292
do_sendfile+0x400/0xe50 fs/read_write.c:1376
__do_sys_sendfile64 fs/read_write.c:1431 [inline]
__se_sys_sendfile64 fs/read_write.c:1417 [inline]
__ia32_sys_sendfile64+0x1d7/0x220 fs/read_write.c:1417
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
-> #0 (&pipe->mutex){+.+.}-{4:4}:
check_prev_add kernel/locking/lockdep.c:3165 [inline]
check_prevs_add kernel/locking/lockdep.c:3284 [inline]
validate_chain kernel/locking/lockdep.c:3908 [inline]
__lock_acquire+0x1669/0x2890 kernel/locking/lockdep.c:5237
lock_acquire kernel/locking/lockdep.c:5868 [inline]
lock_acquire+0x179/0x330 kernel/locking/lockdep.c:5825
__mutex_lock_common kernel/locking/mutex.c:614 [inline]
__mutex_lock+0x1aa/0x1ca0 kernel/locking/mutex.c:776
anon_pipe_write+0x15d/0x1bd0 fs/pipe.c:458
__kernel_write_iter+0x720/0xb10 fs/read_write.c:619
__kernel_write+0xf5/0x140 fs/read_write.c:639
autofs_write fs/autofs/waitq.c:57 [inline]
autofs_notify_daemon+0x4db/0xd60 fs/autofs/waitq.c:164
autofs_wait+0x10f3/0x1ac0 fs/autofs/waitq.c:426
autofs_mount_wait+0x132/0x3c0 fs/autofs/root.c:255
autofs_d_automount+0x4b2/0x960 fs/autofs/root.c:409
follow_automount fs/namei.c:1499 [inline]
__traverse_mounts+0x1b9/0x830 fs/namei.c:1552
traverse_mounts fs/namei.c:1581 [inline]
handle_mounts fs/namei.c:1686 [inline]
step_into_slowpath+0x772/0xf50 fs/namei.c:2043
step_into fs/namei.c:2091 [inline]
walk_component fs/namei.c:2227 [inline]
lookup_last fs/namei.c:2722 [inline]
path_lookupat+0x627/0xc40 fs/namei.c:2746
filename_lookup+0x224/0x5f0 fs/namei.c:2775
kern_path+0x35/0x50 fs/namei.c:2987
lookup_bdev+0xd8/0x280 block/bdev.c:1222
resume_store+0x1d6/0x490 kernel/power/hibernate.c:1306
kobj_attr_store+0x58/0x80 lib/kobject.c:840
sysfs_kf_write+0xf2/0x150 fs/sysfs/file.c:142
kernfs_fop_write_iter+0x3af/0x570 fs/kernfs/file.c:352
new_sync_write fs/read_write.c:593 [inline]
vfs_write+0x7d3/0x11d0 fs/read_write.c:686
ksys_write+0x12a/0x250 fs/read_write.c:738
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
other info that might help us debug this:
Chain exists of:
&pipe->mutex --> &of->mutex --> &sbi->pipe_mutex
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&sbi->pipe_mutex);
lock(&of->mutex);
lock(&sbi->pipe_mutex);
lock(&pipe->mutex);
*** DEADLOCK ***
5 locks held by syz.0.219/6825:
#0: ffff88804d3527f8 (&f->f_pos_lock){+.+.}-{4:4}, at: fdget_pos+0x2a2/0x370 fs/file.c:1255
#1: ffff888029064420 (sb_writers#7){.+.+}-{0:0}, at: ksys_write+0x12a/0x250 fs/read_write.c:738
#2: ffff888020a93c88 (&of->mutex){+.+.}-{4:4}, at: kernfs_fop_write_iter+0x28f/0x570 fs/kernfs/file.c:343
#3: ffff88801c738008 (kn->active#66){.+.+}-{0:0}, at: kernfs_get_active_of fs/kernfs/file.c:80 [inline]
#3: ffff88801c738008 (kn->active#66){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x2ff/0x570 fs/kernfs/file.c:344
#4: ffff8880121b9948 (&sbi->pipe_mutex){+.+.}-{4:4}, at: autofs_write fs/autofs/waitq.c:55 [inline]
#4: ffff8880121b9948 (&sbi->pipe_mutex){+.+.}-{4:4}, at: autofs_notify_daemon+0x4a6/0xd60 fs/autofs/waitq.c:164
stack backtrace:
CPU: 3 UID: 0 PID: 6825 Comm: syz.0.219 Tainted: G L syzkaller #0 PREEMPT(full)
Tainted: [L]=SOFTLOCKUP
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Call Trace:
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
print_circular_bug+0x275/0x340 kernel/locking/lockdep.c:2043
check_noncircular+0x146/0x160 kernel/locking/lockdep.c:2175
check_prev_add kernel/locking/lockdep.c:3165 [inline]
check_prevs_add kernel/locking/lockdep.c:3284 [inline]
validate_chain kernel/locking/lockdep.c:3908 [inline]
__lock_acquire+0x1669/0x2890 kernel/locking/lockdep.c:5237
lock_acquire kernel/locking/lockdep.c:5868 [inline]
lock_acquire+0x179/0x330 kernel/locking/lockdep.c:5825
__mutex_lock_common kernel/locking/mutex.c:614 [inline]
__mutex_lock+0x1aa/0x1ca0 kernel/locking/mutex.c:776
anon_pipe_write+0x15d/0x1bd0 fs/pipe.c:458
__kernel_write_iter+0x720/0xb10 fs/read_write.c:619
__kernel_write+0xf5/0x140 fs/read_write.c:639
autofs_write fs/autofs/waitq.c:57 [inline]
autofs_notify_daemon+0x4db/0xd60 fs/autofs/waitq.c:164
autofs_wait+0x10f3/0x1ac0 fs/autofs/waitq.c:426
autofs_mount_wait+0x132/0x3c0 fs/autofs/root.c:255
autofs_d_automount+0x4b2/0x960 fs/autofs/root.c:409
follow_automount fs/namei.c:1499 [inline]
__traverse_mounts+0x1b9/0x830 fs/namei.c:1552
traverse_mounts fs/namei.c:1581 [inline]
handle_mounts fs/namei.c:1686 [inline]
step_into_slowpath+0x772/0xf50 fs/namei.c:2043
step_into fs/namei.c:2091 [inline]
walk_component fs/namei.c:2227 [inline]
lookup_last fs/namei.c:2722 [inline]
path_lookupat+0x627/0xc40 fs/namei.c:2746
filename_lookup+0x224/0x5f0 fs/namei.c:2775
kern_path+0x35/0x50 fs/namei.c:2987
lookup_bdev+0xd8/0x280 block/bdev.c:1222
resume_store+0x1d6/0x490 kernel/power/hibernate.c:1306
kobj_attr_store+0x58/0x80 lib/kobject.c:840
sysfs_kf_write+0xf2/0x150 fs/sysfs/file.c:142
kernfs_fop_write_iter+0x3af/0x570 fs/kernfs/file.c:352
new_sync_write fs/read_write.c:593 [inline]
vfs_write+0x7d3/0x11d0 fs/read_write.c:686
ksys_write+0x12a/0x250 fs/read_write.c:738
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
RIP: 0023:0xf707d579
Code: b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00
RSP: 002b:00000000f544c55c EFLAGS: 00000296 ORIG_RAX: 0000000000000004
RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 0000000080000040
RDX: 0000000000000012 RSI: 0000000000000000 RDI: 0000000000000000
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
FAULT_INJECTION: forcing a failure.
name fail_page_alloc, interval 1, probability 0, space 0, times 0
CPU: 3 UID: 0 PID: 6825 Comm: syz.0.219 Tainted: G L syzkaller #0 PREEMPT(full)
Tainted: [L]=SOFTLOCKUP
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Call Trace:
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x16c/0x1f0 lib/dump_stack.c:120
fail_dump lib/fault-inject.c:73 [inline]
should_fail_ex+0x512/0x640 lib/fault-inject.c:174
should_fail_alloc_page+0xe7/0x130 mm/fail_page_alloc.c:44
prepare_alloc_pages+0x401/0x670 mm/page_alloc.c:4985
__alloc_frozen_pages_noprof+0x18b/0x2430 mm/page_alloc.c:5199
alloc_pages_mpol+0x1fb/0x550 mm/mempolicy.c:2486
alloc_frozen_pages_noprof mm/mempolicy.c:2557 [inline]
alloc_pages_noprof+0x131/0x390 mm/mempolicy.c:2577
anon_pipe_get_page fs/pipe.c:124 [inline]
anon_pipe_write+0xeb0/0x1bd0 fs/pipe.c:515
__kernel_write_iter+0x720/0xb10 fs/read_write.c:619
__kernel_write+0xf5/0x140 fs/read_write.c:639
autofs_write fs/autofs/waitq.c:57 [inline]
autofs_notify_daemon+0x4db/0xd60 fs/autofs/waitq.c:164
autofs_wait+0x10f3/0x1ac0 fs/autofs/waitq.c:426
autofs_mount_wait+0x132/0x3c0 fs/autofs/root.c:255
autofs_d_automount+0x4b2/0x960 fs/autofs/root.c:409
follow_automount fs/namei.c:1499 [inline]
__traverse_mounts+0x1b9/0x830 fs/namei.c:1552
traverse_mounts fs/namei.c:1581 [inline]
handle_mounts fs/namei.c:1686 [inline]
step_into_slowpath+0x772/0xf50 fs/namei.c:2043
step_into fs/namei.c:2091 [inline]
walk_component fs/namei.c:2227 [inline]
lookup_last fs/namei.c:2722 [inline]
path_lookupat+0x627/0xc40 fs/namei.c:2746
filename_lookup+0x224/0x5f0 fs/namei.c:2775
kern_path+0x35/0x50 fs/namei.c:2987
lookup_bdev+0xd8/0x280 block/bdev.c:1222
resume_store+0x1d6/0x490 kernel/power/hibernate.c:1306
kobj_attr_store+0x58/0x80 lib/kobject.c:840
sysfs_kf_write+0xf2/0x150 fs/sysfs/file.c:142
kernfs_fop_write_iter+0x3af/0x570 fs/kernfs/file.c:352
new_sync_write fs/read_write.c:593 [inline]
vfs_write+0x7d3/0x11d0 fs/read_write.c:686
ksys_write+0x12a/0x250 fs/read_write.c:738
do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
__do_fast_syscall_32+0xe8/0x680 arch/x86/entry/syscall_32.c:307
do_fast_syscall_32+0x32/0x80 arch/x86/entry/syscall_32.c:332
entry_SYSENTER_compat_after_hwframe+0x84/0x8e
RIP: 0023:0xf707d579
Code: b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 00 00 00 00 00 00 00 00 00 00 00 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00
RSP: 002b:00000000f544c55c EFLAGS: 00000296 ORIG_RAX: 0000000000000004
RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 0000000080000040
RDX: 0000000000000012 RSI: 0000000000000000 RDI: 0000000000000000
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
PM: Image not found (code -22)
----------------
Code disassembly (best guess), 2 bytes skipped:
0: 10 06 adc %al,(%rsi)
2: 03 74 b4 01 add 0x1(%rsp,%rsi,4),%esi
6: 10 07 adc %al,(%rdi)
8: 03 74 b0 01 add 0x1(%rax,%rsi,4),%esi
c: 10 08 adc %cl,(%rax)
e: 03 74 d8 01 add 0x1(%rax,%rbx,8),%esi
1e: 00 51 52 add %dl,0x52(%rcx)
21: 55 push %rbp
22: 89 e5 mov %esp,%ebp
24: 0f 34 sysenter
26: cd 80 int $0x80
* 28: 5d pop %rbp <-- trapping instruction
29: 5a pop %rdx
2a: 59 pop %rcx
2b: c3 ret
2c: 90 nop
2d: 90 nop
2e: 90 nop
2f: 90 nop
30: 8d b4 26 00 00 00 00 lea 0x0(%rsi,%riz,1),%esi
37: 8d b4 26 00 00 00 00 lea 0x0(%rsi,%riz,1),%esi