[PATCH V2] ext4: add casefolded feature check before setup encrypted info

From: Lizhi Xu
Date: Thu May 30 2024 - 23:08:17 EST


Due to the current file system not supporting the casefolded feature, only
i_crypt_info was initialized when creating encrypted information, without actually
setting the sighash. Therefore, when creating an inode, if the system does not
support the casefolded feature, encrypted information will not be created.

Reported-by: syzbot+340581ba9dceb7e06fb3@xxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Lizhi Xu <lizhi.xu@xxxxxxxxxxxxx>
---
fs/ext4/ialloc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
index e9bbb1da2d0a..47b75589fdf4 100644
--- a/fs/ext4/ialloc.c
+++ b/fs/ext4/ialloc.c
@@ -983,7 +983,8 @@ struct inode *__ext4_new_inode(struct mnt_idmap *idmap,
ei->i_projid = make_kprojid(&init_user_ns, EXT4_DEF_PROJID);

if (!(i_flags & EXT4_EA_INODE_FL)) {
- err = fscrypt_prepare_new_inode(dir, inode, &encrypt);
+ if (ext4_has_feature_casefold(inode->i_sb))
+ err = fscrypt_prepare_new_inode(dir, inode, &encrypt);
if (err)
goto out;
}
--
2.43.0