Message ID | 20210406161804.20150-1-jack@suse.cz |
---|---|
State | Awaiting Upstream |
Headers | show |
Series | ext4: Annotate two harmless KCSAN data races | expand |
On Tue, Apr 06, 2021 at 06:17:59PM +0200, Jan Kara wrote: > Access to journal->j_running_transaction is not protected by appropriate > lock and thus is racy. We are well aware of that and the code handles > the race properly. Just add a comment and data_race() annotation. > > Reported-by: syzbot+30774a6acf6a2cf6d535@syzkaller.appspotmail.com > Signed-off-by: Jan Kara <jack@suse.cz> Thanks, applied. - Ted
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c index 9396666b7314..398d1d9209e2 100644 --- a/fs/jbd2/transaction.c +++ b/fs/jbd2/transaction.c @@ -349,7 +349,12 @@ static int start_this_handle(journal_t *journal, handle_t *handle, } alloc_transaction: - if (!journal->j_running_transaction) { + /* + * This check is racy but it is just an optimization of allocating new + * transaction early if there are high chances we'll need it. If we + * guess wrong, we'll retry or free unused transaction. + */ + if (!data_race(journal->j_running_transaction)) { /* * If __GFP_FS is not present, then we may be being called from * inside the fs writeback layer, so we MUST NOT fail.
Access to journal->j_running_transaction is not protected by appropriate lock and thus is racy. We are well aware of that and the code handles the race properly. Just add a comment and data_race() annotation. Reported-by: syzbot+30774a6acf6a2cf6d535@syzkaller.appspotmail.com Signed-off-by: Jan Kara <jack@suse.cz> --- fs/jbd2/transaction.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)