From: Marco Elver <elver@google.com>
To: Dmitry Vyukov <dvyukov@google.com>
Cc: Jan Kara <jack@suse.cz>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
syzbot <syzbot+30774a6acf6a2cf6d535@syzkaller.appspotmail.com>,
Jan Kara <jack@suse.com>,
linux-ext4@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
syzkaller-bugs <syzkaller-bugs@googlegroups.com>,
Theodore Ts'o <tytso@mit.edu>
Subject: Re: [syzbot] KCSAN: data-race in start_this_handle / start_this_handle
Date: Thu, 11 Mar 2021 16:08:30 +0100 [thread overview]
Message-ID: <YEoybjJpCQzNx15r@elver.google.com> (raw)
In-Reply-To: <CACT4Y+ZtBwv1aXUumTXnWzAi7LEpJ6CZemGyVR2FC6_YO2E4EQ@mail.gmail.com>
On Thu, Mar 11, 2021 at 03:53PM +0100, Dmitry Vyukov wrote:
> On Thu, Mar 11, 2021 at 3:25 PM Jan Kara <jack@suse.cz> wrote:
> >
> > On Thu 11-03-21 02:59:14, syzbot wrote:
> > > HEAD commit: a74e6a01 Merge tag 's390-5.12-3' of git://git.kernel.org/p..
> > > git tree: upstream
> > > console output: https://syzkaller.appspot.com/x/log.txt?x=159f69ecd00000
> > > kernel config: https://syzkaller.appspot.com/x/.config?x=de394bbaade74fb7
> > > dashboard link: https://syzkaller.appspot.com/bug?extid=30774a6acf6a2cf6d535
> > > compiler: Debian clang version 11.0.1-2
> > >
> > > Unfortunately, I don't have any reproducer for this issue yet.
> > >
> > > IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > > Reported-by: syzbot+30774a6acf6a2cf6d535@syzkaller.appspotmail.com
> > >
> > > ==================================================================
> > > BUG: KCSAN: data-race in start_this_handle / start_this_handle
> > >
> > > write to 0xffff888103880870 of 8 bytes by task 29956 on cpu 1:
> > > jbd2_get_transaction fs/jbd2/transaction.c:125 [inline]
> > > start_this_handle+0xceb/0x1010 fs/jbd2/transaction.c:400
> > > jbd2__journal_start+0x1fc/0x3f0 fs/jbd2/transaction.c:503
> > > __ext4_journal_start_sb+0x159/0x310 fs/ext4/ext4_jbd2.c:105
> > > __ext4_journal_start fs/ext4/ext4_jbd2.h:320 [inline]
> > > ext4_da_write_begin+0x460/0xaf0 fs/ext4/inode.c:2998
> > > generic_perform_write+0x196/0x3a0 mm/filemap.c:3575
> > > ext4_buffered_write_iter+0x2e5/0x3e0 fs/ext4/file.c:269
> > > ext4_file_write_iter+0x48a/0x10b0 fs/ext4/file.c:502
> > > call_write_iter include/linux/fs.h:1977 [inline]
> > > do_iter_readv_writev+0x2cb/0x360 fs/read_write.c:740
> > > do_iter_write+0x112/0x4c0 fs/read_write.c:866
> > > vfs_iter_write+0x4c/0x70 fs/read_write.c:907
> > > iter_file_splice_write+0x40a/0x750 fs/splice.c:689
> > > do_splice_from fs/splice.c:767 [inline]
> > > direct_splice_actor+0x80/0xa0 fs/splice.c:936
> > > splice_direct_to_actor+0x345/0x650 fs/splice.c:891
> > > do_splice_direct+0xf5/0x170 fs/splice.c:979
> > > do_sendfile+0x7a6/0xe20 fs/read_write.c:1260
> > > __do_sys_sendfile64 fs/read_write.c:1319 [inline]
> > > __se_sys_sendfile64 fs/read_write.c:1311 [inline]
> > > __x64_sys_sendfile64+0xa9/0x130 fs/read_write.c:1311
> > > do_syscall_64+0x39/0x80 arch/x86/entry/common.c:46
> > > entry_SYSCALL_64_after_hwframe+0x44/0xae
> > >
> > > read to 0xffff888103880870 of 8 bytes by task 29936 on cpu 0:
> > > start_this_handle+0x1c1/0x1010 fs/jbd2/transaction.c:352
> > > jbd2__journal_start+0x1fc/0x3f0 fs/jbd2/transaction.c:503
> > > __ext4_journal_start_sb+0x159/0x310 fs/ext4/ext4_jbd2.c:105
> > > __ext4_journal_start fs/ext4/ext4_jbd2.h:320 [inline]
> > > ext4_da_write_begin+0x460/0xaf0 fs/ext4/inode.c:2998
> > > generic_perform_write+0x196/0x3a0 mm/filemap.c:3575
> > > ext4_buffered_write_iter+0x2e5/0x3e0 fs/ext4/file.c:269
> > > ext4_file_write_iter+0x48a/0x10b0 fs/ext4/file.c:502
> > > call_write_iter include/linux/fs.h:1977 [inline]
> > > do_iter_readv_writev+0x2cb/0x360 fs/read_write.c:740
> > > do_iter_write+0x112/0x4c0 fs/read_write.c:866
> > > vfs_iter_write+0x4c/0x70 fs/read_write.c:907
> > > iter_file_splice_write+0x40a/0x750 fs/splice.c:689
> > > do_splice_from fs/splice.c:767 [inline]
> > > direct_splice_actor+0x80/0xa0 fs/splice.c:936
> > > splice_direct_to_actor+0x345/0x650 fs/splice.c:891
> > > do_splice_direct+0xf5/0x170 fs/splice.c:979
> > > do_sendfile+0x7a6/0xe20 fs/read_write.c:1260
> > > __do_sys_sendfile64 fs/read_write.c:1319 [inline]
> > > __se_sys_sendfile64 fs/read_write.c:1311 [inline]
> > > __x64_sys_sendfile64+0xa9/0x130 fs/read_write.c:1311
> > > do_syscall_64+0x39/0x80 arch/x86/entry/common.c:46
> > > entry_SYSCALL_64_after_hwframe+0x44/0xae
> > >
> > > Reported by Kernel Concurrency Sanitizer on:
> > > CPU: 0 PID: 29936 Comm: syz-executor.5 Not tainted 5.12.0-rc2-syzkaller #0
> > > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
> > > ==================================================================
> >
> > So this case is harmless. start_this_handle() does indeed check
> > journal->j_running_transaction without any protection and this is only a
> > racy check to opportunistically preallocate a transaction if we are likely
> > to need it. There was some macro to instruct KCSAN that the read is
> > actually fine, wasn't there?
If the outcome of the check does not affect correctness and the code is
entirely fault tolerant to the precise value being read, then a
data_race(!journal->j_running_transaction) marking here would be fine.
If in doubt, this is the latest summary for concurrent access markings:
https://lkml.kernel.org/r/20210220051000.GA457@paulmck-ThinkPad-P72
> +Marco
> +Tetsuo, did you want to fix it?
Thanks,
-- Marco
next prev parent reply other threads:[~2021-03-11 15:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 10:59 [syzbot] KCSAN: data-race in start_this_handle / start_this_handle syzbot
2021-03-11 14:25 ` Jan Kara
2021-03-11 14:53 ` Dmitry Vyukov
2021-03-11 15:08 ` Marco Elver [this message]
2021-03-11 15:30 ` Theodore Ts'o
2021-03-11 15:54 ` Marco Elver
2021-03-19 14:15 ` Tetsuo Handa
2021-03-19 17:23 ` Paul E. McKenney
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=YEoybjJpCQzNx15r@elver.google.com \
--to=elver@google.com \
--cc=dvyukov@google.com \
--cc=jack@suse.com \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=syzbot+30774a6acf6a2cf6d535@syzkaller.appspotmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox