]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: filesystems without casefold feature cannot be mounted with siphash
authorLizhi Xu <lizhi.xu@windriver.com>
Wed, 5 Jun 2024 01:23:35 +0000 (09:23 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Oct 2024 10:03:39 +0000 (12:03 +0200)
[ Upstream commit 985b67cd86392310d9e9326de941c22fc9340eec ]

When mounting the ext4 filesystem, if the default hash version is set to
DX_HASH_SIPHASH but the casefold feature is not set, exit the mounting.

Reported-by: syzbot+340581ba9dceb7e06fb3@syzkaller.appspotmail.com
Signed-off-by: Lizhi Xu <lizhi.xu@windriver.com>
Link: https://patch.msgid.link/20240605012335.44086-1-lizhi.xu@windriver.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ext4/super.c

index 7e73e13741d1e219073f105d2dc091f76d2ad420..cecea19908109b65d9ffb21496ea1b80394c5e48 100644 (file)
@@ -3582,6 +3582,13 @@ int ext4_feature_set_ok(struct super_block *sb, int readonly)
                         "mounted without CONFIG_UNICODE");
                return 0;
        }
+       if (EXT4_SB(sb)->s_es->s_def_hash_version == DX_HASH_SIPHASH &&
+           !ext4_has_feature_casefold(sb)) {
+               ext4_msg(sb, KERN_ERR,
+                        "Filesystem without casefold feature cannot be "
+                        "mounted with siphash");
+               return 0;
+       }
 
        if (readonly)
                return 1;