]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hfsplus: return EIO when type of hidden directory mismatch in hfsplus_fill_super()
authorYangtao Li <frank.li@vivo.com>
Tue, 5 Aug 2025 16:58:59 +0000 (10:58 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:04:36 +0000 (14:04 +0100)
[ Upstream commit 9282bc905f0949fab8cf86c0f620ca988761254c ]

If Catalog File contains corrupted record for the case of
hidden directory's type, regard it as I/O error instead of
Invalid argument.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Reviewed-by: Viacheslav Dubeyko <slava@dubeyko.com>
Link: https://lore.kernel.org/r/20250805165905.3390154-1-frank.li@vivo.com
Signed-off-by: Viacheslav Dubeyko <slava@dubeyko.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/hfsplus/super.c

index 8c086f16dd5892939a47fecf7818da8d7036a4b7..7e889820a63d0b4a12d3c434c846d383dee10c06 100644 (file)
@@ -538,7 +538,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent)
        if (!hfs_brec_read(&fd, &entry, sizeof(entry))) {
                hfs_find_exit(&fd);
                if (entry.type != cpu_to_be16(HFSPLUS_FOLDER)) {
-                       err = -EINVAL;
+                       err = -EIO;
                        goto out_put_root;
                }
                inode = hfsplus_iget(sb, be32_to_cpu(entry.folder.id));