From: syzbot <syzbot+4bdbcaa79e8ee36fe6af@syzkaller.appspotmail.com>
To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-unionfs@vger.kernel.org, miklos@szeredi.hu,
mszeredi@redhat.com, syzkaller-bugs@googlegroups.com,
viro@zeniv.linux.org.uk
Subject: [syzbot] possible deadlock in iter_file_splice_write (2)
Date: Wed, 28 Jul 2021 07:19:23 -0700 [thread overview]
Message-ID: <00000000000052a12105c82facde@google.com> (raw)
Hello,
syzbot found the following issue on:
HEAD commit: f0fddcec6b62 Merge tag 'for-5.14-rc2-tag' of git://git.ker..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=15a13312300000
kernel config: https://syzkaller.appspot.com/x/.config?x=5dc0e3202ae2f574
dashboard link: https://syzkaller.appspot.com/bug?extid=4bdbcaa79e8ee36fe6af
compiler: Debian clang version 11.0.1-2, GNU ld (GNU Binutils for Debian) 2.35.1
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=10a68b12300000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1226e6ca300000
The issue was bisected to:
commit 82a763e61e2b601309d696d4fa514c77d64ee1be
Author: Miklos Szeredi <mszeredi@redhat.com>
Date: Mon Dec 14 14:26:14 2020 +0000
ovl: simplify file splice
bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1324e8fc300000
final oops: https://syzkaller.appspot.com/x/report.txt?x=10a4e8fc300000
console output: https://syzkaller.appspot.com/x/log.txt?x=1724e8fc300000
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+4bdbcaa79e8ee36fe6af@syzkaller.appspotmail.com
Fixes: 82a763e61e2b ("ovl: simplify file splice")
======================================================
WARNING: possible circular locking dependency detected
5.14.0-rc2-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor919/8626 is trying to acquire lock:
ffff8880141ed068 (&pipe->mutex/1){+.+.}-{3:3}, at: iter_file_splice_write+0x257/0xf30 fs/splice.c:635
but task is already holding lock:
ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __do_splice fs/splice.c:1144 [inline]
ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __do_sys_splice fs/splice.c:1350 [inline]
ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __se_sys_splice+0x32c/0x430 fs/splice.c:1332
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #2 (sb_writers#5){.+.+}-{0:0}:
lock_acquire+0x182/0x4a0 kernel/locking/lockdep.c:5625
percpu_down_read include/linux/percpu-rwsem.h:51 [inline]
__sb_start_write include/linux/fs.h:1763 [inline]
sb_start_write include/linux/fs.h:1833 [inline]
file_start_write+0xc7/0x230 include/linux/fs.h:3040
ovl_write_iter+0x81d/0xdb0 fs/overlayfs/file.c:357
do_iter_readv_writev+0x566/0x770 include/linux/fs.h:2108
do_iter_write+0x16c/0x5f0 fs/read_write.c:866
iter_file_splice_write+0x7c1/0xf30 fs/splice.c:689
do_splice_from fs/splice.c:767 [inline]
do_splice+0xe8e/0x17e0 fs/splice.c:1079
__do_splice fs/splice.c:1144 [inline]
__do_sys_splice fs/splice.c:1350 [inline]
__se_sys_splice+0x32c/0x430 fs/splice.c:1332
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
-> #1 (&ovl_i_mutex_key[depth]){+.+.}-{3:3}:
lock_acquire+0x182/0x4a0 kernel/locking/lockdep.c:5625
down_write+0x97/0x170 kernel/locking/rwsem.c:1406
inode_lock include/linux/fs.h:774 [inline]
ovl_write_iter+0x132/0xdb0 fs/overlayfs/file.c:341
do_iter_readv_writev+0x566/0x770 include/linux/fs.h:2108
do_iter_write+0x16c/0x5f0 fs/read_write.c:866
iter_file_splice_write+0x7c1/0xf30 fs/splice.c:689
do_splice_from fs/splice.c:767 [inline]
do_splice+0xe8e/0x17e0 fs/splice.c:1079
__do_splice fs/splice.c:1144 [inline]
__do_sys_splice fs/splice.c:1350 [inline]
__se_sys_splice+0x32c/0x430 fs/splice.c:1332
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
-> #0 (&pipe->mutex/1){+.+.}-{3:3}:
check_prev_add kernel/locking/lockdep.c:3051 [inline]
check_prevs_add+0x4f9/0x5b30 kernel/locking/lockdep.c:3174
validate_chain kernel/locking/lockdep.c:3789 [inline]
__lock_acquire+0x4476/0x6100 kernel/locking/lockdep.c:5015
lock_acquire+0x182/0x4a0 kernel/locking/lockdep.c:5625
__mutex_lock_common+0x1ad/0x3770 kernel/locking/mutex.c:959
__mutex_lock kernel/locking/mutex.c:1104 [inline]
mutex_lock_nested+0x1a/0x20 kernel/locking/mutex.c:1119
iter_file_splice_write+0x257/0xf30 fs/splice.c:635
do_splice_from fs/splice.c:767 [inline]
do_splice+0xe8e/0x17e0 fs/splice.c:1079
__do_splice fs/splice.c:1144 [inline]
__do_sys_splice fs/splice.c:1350 [inline]
__se_sys_splice+0x32c/0x430 fs/splice.c:1332
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
other info that might help us debug this:
Chain exists of:
&pipe->mutex/1 --> &ovl_i_mutex_key[depth] --> sb_writers#5
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(sb_writers#5);
lock(&ovl_i_mutex_key[depth]);
lock(sb_writers#5);
lock(&pipe->mutex/1);
*** DEADLOCK ***
1 lock held by syz-executor919/8626:
#0: ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __do_splice fs/splice.c:1144 [inline]
#0: ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __do_sys_splice fs/splice.c:1350 [inline]
#0: ffff888029aac460 (sb_writers#5){.+.+}-{0:0}, at: __se_sys_splice+0x32c/0x430 fs/splice.c:1332
stack backtrace:
CPU: 0 PID: 8626 Comm: syz-executor919 Not tainted 5.14.0-rc2-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_lvl+0x1ae/0x29f lib/dump_stack.c:105
print_circular_bug+0xb17/0xdc0 kernel/locking/lockdep.c:2009
check_noncircular+0x2cc/0x390 kernel/locking/lockdep.c:2131
check_prev_add kernel/locking/lockdep.c:3051 [inline]
check_prevs_add+0x4f9/0x5b30 kernel/locking/lockdep.c:3174
validate_chain kernel/locking/lockdep.c:3789 [inline]
__lock_acquire+0x4476/0x6100 kernel/locking/lockdep.c:5015
lock_acquire+0x182/0x4a0 kernel/locking/lockdep.c:5625
__mutex_lock_common+0x1ad/0x3770 kernel/locking/mutex.c:959
__mutex_lock kernel/locking/mutex.c:1104 [inline]
mutex_lock_nested+0x1a/0x20 kernel/locking/mutex.c:1119
iter_file_splice_write+0x257/0xf30 fs/splice.c:635
do_splice_from fs/splice.c:767 [inline]
do_splice+0xe8e/0x17e0 fs/splice.c:1079
__do_splice fs/splice.c:1144 [inline]
__do_sys_splice fs/splice.c:1350 [inline]
__se_sys_splice+0x32c/0x430 fs/splice.c:1332
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x4461b9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 41 15 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f7b06be32e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000113
RAX: ffffffffffffffda RBX: 00000000004cb4f0 RCX: 00000000004461b9
RDX: 0000000000000005 RSI: 0000000000000000 RDI: 0000000000000003
RBP: 000000000049b06c R08: 000000000004ffdc R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 3d72696472657070
R13: 0079616c7265766f R14: 69662f7375622f2e R15: 00000000004cb4f8
---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.
syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisection
syzbot can test patches for this issue, for details see:
https://goo.gl/tpsmEJ#testing-patches
next reply other threads:[~2021-07-28 14:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-28 14:19 syzbot [this message]
2021-07-28 14:32 ` [syzbot] possible deadlock in iter_file_splice_write (2) Miklos Szeredi
2021-07-28 20:57 ` syzbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=00000000000052a12105c82facde@google.com \
--to=syzbot+4bdbcaa79e8ee36fe6af@syzkaller.appspotmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mszeredi@redhat.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.