====================================================== WARNING: possible circular locking dependency detected 4.14.224-syzkaller #0 Not tainted ------------------------------------------------------ syz-executor.5/29186 is trying to acquire lock: (&p->lock){+.+.}, at: [] seq_read+0xba/0x1120 fs/seq_file.c:165 but task is already holding lock: (sb_writers#3){.+.+}, at: [] file_start_write include/linux/fs.h:2712 [inline] (sb_writers#3){.+.+}, at: [] do_sendfile+0x84f/0xb30 fs/read_write.c:1440 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #3 (sb_writers#3){.+.+}: percpu_down_read_preempt_disable include/linux/percpu-rwsem.h:36 [inline] percpu_down_read include/linux/percpu-rwsem.h:59 [inline] __sb_start_write+0x64/0x260 fs/super.c:1342 sb_start_write include/linux/fs.h:1549 [inline] mnt_want_write+0x3a/0xb0 fs/namespace.c:386 ovl_rename+0x11b/0xf10 fs/overlayfs/dir.c:935 vfs_rename+0x560/0x1820 fs/namei.c:4496 SYSC_renameat2 fs/namei.c:4644 [inline] SyS_renameat2+0x95b/0xad0 fs/namei.c:4533 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x46/0xbb -> #2 (&ovl_i_mutex_dir_key[depth]){++++}: down_read+0x36/0x80 kernel/locking/rwsem.c:24 inode_lock_shared include/linux/fs.h:729 [inline] do_last fs/namei.c:3333 [inline] path_openat+0x149b/0x2970 fs/namei.c:3569 do_filp_open+0x179/0x3c0 fs/namei.c:3603 do_open_execat+0xd3/0x450 fs/exec.c:849 do_execveat_common+0x711/0x1f30 fs/exec.c:1755 do_execve fs/exec.c:1860 [inline] SYSC_execve fs/exec.c:1941 [inline] SyS_execve+0x3b/0x50 fs/exec.c:1936 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x46/0xbb -> #1 (&sig->cred_guard_mutex){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 lock_trace fs/proc/base.c:407 [inline] proc_pid_syscall+0xa7/0x2a0 fs/proc/base.c:639 proc_single_show+0xe7/0x150 fs/proc/base.c:761 seq_read+0x4cf/0x1120 fs/seq_file.c:237 do_loop_readv_writev fs/read_write.c:695 [inline] do_loop_readv_writev fs/read_write.c:682 [inline] do_iter_read+0x3eb/0x5b0 fs/read_write.c:919 vfs_readv+0xc8/0x120 fs/read_write.c:981 do_preadv fs/read_write.c:1065 [inline] SYSC_preadv fs/read_write.c:1115 [inline] SyS_preadv+0x15a/0x200 fs/read_write.c:1110 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x46/0xbb -> #0 (&p->lock){+.+.}: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 seq_read+0xba/0x1120 fs/seq_file.c:165 proc_reg_read+0xee/0x1a0 fs/proc/inode.c:217 do_loop_readv_writev fs/read_write.c:695 [inline] do_loop_readv_writev fs/read_write.c:682 [inline] do_iter_read+0x3eb/0x5b0 fs/read_write.c:919 vfs_readv+0xc8/0x120 fs/read_write.c:981 kernel_readv fs/splice.c:361 [inline] default_file_splice_read+0x418/0x910 fs/splice.c:416 do_splice_to+0xfb/0x140 fs/splice.c:880 splice_direct_to_actor+0x207/0x730 fs/splice.c:952 do_splice_direct+0x164/0x210 fs/splice.c:1061 do_sendfile+0x47f/0xb30 fs/read_write.c:1441 SYSC_sendfile64 fs/read_write.c:1502 [inline] SyS_sendfile64+0xff/0x110 fs/read_write.c:1488 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: &p->lock --> &ovl_i_mutex_dir_key[depth] --> sb_writers#3 Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(sb_writers#3); lock(&ovl_i_mutex_dir_key[depth]); lock(sb_writers#3); lock(&p->lock); *** DEADLOCK *** 1 lock held by syz-executor.5/29186: #0: (sb_writers#3){.+.+}, at: [] file_start_write include/linux/fs.h:2712 [inline] #0: (sb_writers#3){.+.+}, at: [] do_sendfile+0x84f/0xb30 fs/read_write.c:1440 stack backtrace: CPU: 0 PID: 29186 Comm: syz-executor.5 Not tainted 4.14.224-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 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 seq_read+0xba/0x1120 fs/seq_file.c:165 proc_reg_read+0xee/0x1a0 fs/proc/inode.c:217 do_loop_readv_writev fs/read_write.c:695 [inline] do_loop_readv_writev fs/read_write.c:682 [inline] do_iter_read+0x3eb/0x5b0 fs/read_write.c:919 vfs_readv+0xc8/0x120 fs/read_write.c:981 kernel_readv fs/splice.c:361 [inline] default_file_splice_read+0x418/0x910 fs/splice.c:416 do_splice_to+0xfb/0x140 fs/splice.c:880 splice_direct_to_actor+0x207/0x730 fs/splice.c:952 do_splice_direct+0x164/0x210 fs/splice.c:1061 do_sendfile+0x47f/0xb30 fs/read_write.c:1441 SYSC_sendfile64 fs/read_write.c:1502 [inline] SyS_sendfile64+0xff/0x110 fs/read_write.c:1488 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x46/0xbb RIP: 0033:0x465f69 RSP: 002b:00007fe0d80c9188 EFLAGS: 00000246 ORIG_RAX: 0000000000000028 RAX: ffffffffffffffda RBX: 000000000056c0b0 RCX: 0000000000465f69 RDX: 0000000000000000 RSI: 0000000000000006 RDI: 0000000000000005 RBP: 00000000004bfa3f R08: 0000000000000000 R09: 0000000000000000 R10: 4000000000010046 R11: 0000000000000246 R12: 000000000056c0b0 R13: 00007ffea4cf78ff R14: 00007fe0d80c9300 R15: 0000000000022000 ISO 9660 Extensions: Microsoft Joliet Level 3 ISO 9660 Extensions: Microsoft Joliet Level 3 ISO 9660 Extensions: Microsoft Joliet Level 3 ISO 9660 Extensions: Microsoft Joliet Level 3 VFS: could not find a valid V7 on loop3. VFS: could not find a valid V7 on loop3. netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. VFS: could not find a valid V7 on loop3. netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. VFS: could not find a valid V7 on loop3. netlink: 24 bytes leftover after parsing attributes in process `syz-executor.2'. VFS: could not find a valid V7 on loop3. syz-executor.3 (29435): drop_caches: 0 syz-executor.3 (29435): drop_caches: 0 netlink: 24 bytes leftover after parsing attributes in process `syz-executor.1'. IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found nla_parse: 4 callbacks suppressed netlink: 24 bytes leftover after parsing attributes in process `syz-executor.1'. IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found IPv6 header not found new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored syz-executor.1 (29565): drop_caches: 1 new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored syz-executor.1 (29614): drop_caches: 1 new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored EXT4-fs (loop2): mounted filesystem without journal. Opts: ,errors=continue syz-executor.1 (29663): drop_caches: 1 mmap: syz-executor.5 (29714) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt. EXT4-fs (loop2): mounted filesystem without journal. Opts: ,errors=continue syz-executor.1 (29711): drop_caches: 1 EXT4-fs (loop2): mounted filesystem without journal. Opts: ,errors=continue EXT4-fs (loop2): mounted filesystem without journal. Opts: ,errors=continue