From: syzbot <syzbot+79e6bbabf3ce17357969@syzkaller.appspotmail.com>
To: jack@suse.com, linux-ext4@vger.kernel.org,
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com,
tytso@mit.edu
Subject: Re: [syzbot] possible deadlock in jbd2_journal_lock_updates
Date: Mon, 08 Aug 2022 09:38:26 -0700 [thread overview]
Message-ID: <000000000000e8f52205e5bd716f@google.com> (raw)
In-Reply-To: <000000000000892a3005e5b5d96c@google.com>
syzbot has found a reproducer for the following issue on:
HEAD commit: ca688bff68bc Add linux-next specific files for 20220808
git tree: linux-next
console+strace: https://syzkaller.appspot.com/x/log.txt?x=1143ed46080000
kernel config: https://syzkaller.appspot.com/x/.config?x=4c20e006003cdecb
dashboard link: https://syzkaller.appspot.com/bug?extid=79e6bbabf3ce17357969
compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1783be71080000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12bcdbfa080000
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+79e6bbabf3ce17357969@syzkaller.appspotmail.com
warning: checkpointing journal with EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT can be slow
======================================================
WARNING: possible circular locking dependency detected
5.19.0-next-20220808-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor677/3614 is trying to acquire lock:
ffff88814b8a4170 (&journal->j_barrier){+.+.}-{3:3}, at: jbd2_journal_lock_updates+0x15e/0x310 fs/jbd2/transaction.c:904
but task is already holding lock:
ffff88814b8a2bd8 (&sbi->s_writepages_rwsem){++++}-{0:0}, at: ext4_change_inode_journal_flag+0x178/0x530 fs/ext4/inode.c:6013
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #4 (&sbi->s_writepages_rwsem){++++}-{0:0}:
percpu_down_write+0x4d/0x440 kernel/locking/percpu-rwsem.c:221
ext4_change_inode_journal_flag+0x178/0x530 fs/ext4/inode.c:6013
ext4_ioctl_setflags fs/ext4/ioctl.c:685 [inline]
ext4_fileattr_set+0xddf/0x1930 fs/ext4/ioctl.c:1001
vfs_fileattr_set+0x7f5/0xbe0 fs/ioctl.c:696
ioctl_fssetxattr fs/ioctl.c:758 [inline]
do_vfs_ioctl+0xe62/0x15c0 fs/ioctl.c:845
__do_sys_ioctl fs/ioctl.c:868 [inline]
__se_sys_ioctl fs/ioctl.c:856 [inline]
__x64_sys_ioctl+0x108/0x200 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
-> #3 (mapping.invalidate_lock){++++}-{3:3}:
down_write+0x90/0x150 kernel/locking/rwsem.c:1552
filemap_invalidate_lock include/linux/fs.h:806 [inline]
ext4_setattr+0xd9e/0x2c50 fs/ext4/inode.c:5445
notify_change+0xcd0/0x1440 fs/attr.c:418
do_truncate+0x13c/0x200 fs/open.c:65
do_sys_ftruncate+0x536/0x730 fs/open.c:193
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
-> #2 (&sb->s_type->i_mutex_key#8){++++}-{3:3}:
down_read+0x98/0x450 kernel/locking/rwsem.c:1499
inode_lock_shared include/linux/fs.h:771 [inline]
ext4_bmap+0x4e/0x460 fs/ext4/inode.c:3157
bmap+0xaa/0x120 fs/inode.c:1799
jbd2_journal_bmap+0xa8/0x180 fs/jbd2/journal.c:971
__jbd2_journal_erase fs/jbd2/journal.c:1784 [inline]
jbd2_journal_flush+0x84f/0xc00 fs/jbd2/journal.c:2490
ext4_ioctl_checkpoint fs/ext4/ioctl.c:1082 [inline]
__ext4_ioctl+0x28fd/0x4ab0 fs/ext4/ioctl.c:1586
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:870 [inline]
__se_sys_ioctl fs/ioctl.c:856 [inline]
__x64_sys_ioctl+0x193/0x200 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
-> #1 (&journal->j_checkpoint_mutex){+.+.}-{3:3}:
__mutex_lock_common kernel/locking/mutex.c:603 [inline]
mutex_lock_io_nested+0x13f/0x1190 kernel/locking/mutex.c:833
jbd2_journal_flush+0x19a/0xc00 fs/jbd2/journal.c:2462
ext4_ioctl_checkpoint fs/ext4/ioctl.c:1082 [inline]
__ext4_ioctl+0x28fd/0x4ab0 fs/ext4/ioctl.c:1586
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:870 [inline]
__se_sys_ioctl fs/ioctl.c:856 [inline]
__x64_sys_ioctl+0x193/0x200 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
-> #0 (&journal->j_barrier){+.+.}-{3:3}:
check_prev_add kernel/locking/lockdep.c:3095 [inline]
check_prevs_add kernel/locking/lockdep.c:3214 [inline]
validate_chain kernel/locking/lockdep.c:3829 [inline]
__lock_acquire+0x2a43/0x56d0 kernel/locking/lockdep.c:5053
lock_acquire kernel/locking/lockdep.c:5666 [inline]
lock_acquire+0x1ab/0x570 kernel/locking/lockdep.c:5631
__mutex_lock_common kernel/locking/mutex.c:603 [inline]
__mutex_lock+0x12f/0x1350 kernel/locking/mutex.c:747
jbd2_journal_lock_updates+0x15e/0x310 fs/jbd2/transaction.c:904
ext4_change_inode_journal_flag+0x180/0x530 fs/ext4/inode.c:6014
ext4_ioctl_setflags fs/ext4/ioctl.c:685 [inline]
ext4_fileattr_set+0xddf/0x1930 fs/ext4/ioctl.c:1001
vfs_fileattr_set+0x7f5/0xbe0 fs/ioctl.c:696
ioctl_fssetxattr fs/ioctl.c:758 [inline]
do_vfs_ioctl+0xe62/0x15c0 fs/ioctl.c:845
__do_sys_ioctl fs/ioctl.c:868 [inline]
__se_sys_ioctl fs/ioctl.c:856 [inline]
__x64_sys_ioctl+0x108/0x200 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
other info that might help us debug this:
Chain exists of:
&journal->j_barrier --> mapping.invalidate_lock --> &sbi->s_writepages_rwsem
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&sbi->s_writepages_rwsem);
lock(mapping.invalidate_lock);
lock(&sbi->s_writepages_rwsem);
lock(&journal->j_barrier);
*** DEADLOCK ***
4 locks held by syz-executor677/3614:
#0: ffff88814b8a0460 (sb_writers#4){.+.+}-{0:0}, at: ioctl_setflags fs/ioctl.c:725 [inline]
#0: ffff88814b8a0460 (sb_writers#4){.+.+}-{0:0}, at: do_vfs_ioctl+0xe27/0x15c0 fs/ioctl.c:839
#1: ffff88807599c030 (&sb->s_type->i_mutex_key#8){++++}-{3:3}, at: inode_lock include/linux/fs.h:761 [inline]
#1: ffff88807599c030 (&sb->s_type->i_mutex_key#8){++++}-{3:3}, at: vfs_fileattr_set+0x148/0xbe0 fs/ioctl.c:681
#2: ffff88807599c1d0 (mapping.invalidate_lock){++++}-{3:3}, at: filemap_invalidate_lock include/linux/fs.h:806 [inline]
#2: ffff88807599c1d0 (mapping.invalidate_lock){++++}-{3:3}, at: ext4_change_inode_journal_flag+0x11f/0x530 fs/ext4/inode.c:6005
#3: ffff88814b8a2bd8 (&sbi->s_writepages_rwsem){++++}-{0:0}, at: ext4_change_inode_journal_flag+0x178/0x530 fs/ext4/inode.c:6013
stack backtrace:
CPU: 0 PID: 3614 Comm: syz-executor677 Not tainted 5.19.0-next-20220808-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/22/2022
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
check_noncircular+0x25f/0x2e0 kernel/locking/lockdep.c:2175
check_prev_add kernel/locking/lockdep.c:3095 [inline]
check_prevs_add kernel/locking/lockdep.c:3214 [inline]
validate_chain kernel/locking/lockdep.c:3829 [inline]
__lock_acquire+0x2a43/0x56d0 kernel/locking/lockdep.c:5053
lock_acquire kernel/locking/lockdep.c:5666 [inline]
lock_acquire+0x1ab/0x570 kernel/locking/lockdep.c:5631
__mutex_lock_common kernel/locking/mutex.c:603 [inline]
__mutex_lock+0x12f/0x1350 kernel/locking/mutex.c:747
jbd2_journal_lock_updates+0x15e/0x310 fs/jbd2/transaction.c:904
ext4_change_inode_journal_flag+0x180/0x530 fs/ext4/inode.c:6014
ext4_ioctl_setflags fs/ext4/ioctl.c:685 [inline]
ext4_fileattr_set+0xddf/0x1930 fs/ext4/ioctl.c:1001
vfs_fileattr_set+0x7f5/0xbe0 fs/ioctl.c:696
ioctl_fssetxattr fs/ioctl.c:758 [inline]
do_vfs_ioctl+0xe62/0x15c0 fs/ioctl.c:845
__do_sys_ioctl fs/ioctl.c:868 [inline]
__se_sys_ioctl fs/ioctl.c:856 [inline]
__x64_sys_ioctl+0x108/0x200 fs/ioctl.c:856
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7fb9f377eb39
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 14 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 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fffd29d1e18 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 00007fffd29d1e58 RCX: 00007fb9f377eb39
RDX: 0000000020000040 RSI: 0000000040086602 RDI: 0000000000000005
RBP: 0000000000000000 R08: 431bde82d7b634db R09: 431bde82d7b634db
R10: 431bde82d7b634db R11: 0000000000000246 R12: 00007fb9f3741e40
R13: 431bde82d7b634db R14: 00007fffd29d1e50 R15: 0000000000000000
</TASK>
next prev parent reply other threads:[~2022-08-08 16:38 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-08 7:34 [syzbot] possible deadlock in jbd2_journal_lock_updates syzbot
2022-08-08 16:38 ` syzbot [this message]
2022-08-24 10:06 ` Jan Kara
2022-09-28 7:30 ` Thilo Fromm
2022-09-29 8:27 ` Jan Kara
2022-09-29 13:18 ` Thilo Fromm
2022-10-04 6:38 ` Jeremi Piotrowski
2022-10-04 9:10 ` Jan Kara
2022-10-04 14:21 ` Thilo Fromm
2022-10-05 15:10 ` Jan Kara
2022-10-10 14:24 ` Jeremi Piotrowski
2022-10-14 6:42 ` Thilo Fromm
2022-10-14 13:25 ` Jan Kara
2022-10-21 10:23 ` Thilo Fromm
2022-10-24 10:46 ` Jan Kara
2022-10-24 16:32 ` Thilo Fromm
2022-10-26 10:18 ` Jan Kara
2022-11-10 12:57 ` Jeremi Piotrowski
2022-11-10 15:26 ` Jan Kara
2022-11-10 19:27 ` Jeremi Piotrowski
2022-11-11 14:24 ` Jan Kara
2022-11-11 15:10 ` Jeremi Piotrowski
2022-11-11 15:52 ` Jeremi Piotrowski
2022-11-21 13:35 ` Jan Kara
2022-11-21 15:00 ` Jan Kara
2022-11-21 15:18 ` Thorsten Leemhuis
2022-11-21 15:40 ` Jan Kara
2022-11-21 18:15 ` Jeremi Piotrowski
2022-11-22 11:57 ` Jan Kara
2022-11-22 17:48 ` Jeremi Piotrowski
2022-11-23 19:41 ` Jan Kara
2022-09-30 12:16 ` [syzbot] possible deadlock in jbd2_journal_lock_updates #forregzbot Thorsten Leemhuis
2022-11-23 9:56 ` Thorsten Leemhuis
2023-04-30 23:38 ` [syzbot] possible deadlock in jbd2_journal_lock_updates Theodore Ts'o
[not found] <20220819122008.1561-1-hdanton@sina.com>
2022-08-19 16:00 ` syzbot
[not found] <20220821023626.1810-1-hdanton@sina.com>
2022-08-21 10:34 ` 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=000000000000e8f52205e5bd716f@google.com \
--to=syzbot+79e6bbabf3ce17357969@syzkaller.appspotmail.com \
--cc=jack@suse.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=syzkaller-bugs@googlegroups.com \
--cc=tytso@mit.edu \
/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.