mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
ext4: don't set up encryption key during jbd2 transaction
Commita80f7fcf18("ext4: fixup ext4_fc_track_* functions' signature") extended the scope of the transaction in ext4_unlink() too far, making it include the call to ext4_find_entry(). However, ext4_find_entry() can deadlock when called from within a transaction because it may need to set up the directory's encryption key. Fix this by restoring the transaction to its original scope. Reported-by: syzbot+1a748d0007eeac3ab079@syzkaller.appspotmail.com Fixes:a80f7fcf18("ext4: fixup ext4_fc_track_* functions' signature") Cc: <stable@vger.kernel.org> # v5.10+ Signed-off-by: Eric Biggers <ebiggers@google.com> Link: https://lore.kernel.org/r/20221106224841.279231-3-ebiggers@kernel.org Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
committed by
Theodore Ts'o
parent
0fbcb5251f
commit
4c0d577838
@@ -1397,7 +1397,7 @@ static int ext4_fc_replay_unlink(struct super_block *sb, struct ext4_fc_tl *tl,
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = __ext4_unlink(NULL, old_parent, &entry, inode);
|
||||
ret = __ext4_unlink(old_parent, &entry, inode, NULL);
|
||||
/* -ENOENT ok coz it might not exist anymore. */
|
||||
if (ret == -ENOENT)
|
||||
ret = 0;
|
||||
|
||||
Reference in New Issue
Block a user