OpenCloudOS-Kernel/fs/isofs
Alex Henrie d43a90294a isofs: handle CDs with bad root inode but good Joliet root directory
[ Upstream commit 4243bf80c79211a8ca2795401add9c4a3b1d37ca ]

I have a CD copy of the original Tom Clancy's Ghost Recon game from
2001. The disc mounts without error on Windows, but on Linux mounting
fails with the message "isofs_fill_super: get root inode failed". The
error originates in isofs_read_inode, which returns -EIO because de_len
is 0. The superblock on this disc appears to be intentionally corrupt as
a form of copy protection.

When the root inode is unusable, instead of giving up immediately, try
to continue with the Joliet file table. This fixes the Ghost Recon CD
and probably other copy-protected CDs too.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20240208022134.451490-1-alexhenrie24@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-04-13 13:07:34 +02:00
..
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
compress.c - hfs and hfsplus kmap API modernization from Fabio Francesco 2022-10-12 11:00:22 -07:00
dir.c isofs: remove redundant continue statement 2021-06-17 17:11:42 +02:00
export.c docs: fs: convert docs without extension to ReST 2019-07-31 13:31:05 -06:00
inode.c isofs: handle CDs with bad root inode but good Joliet root directory 2024-04-13 13:07:34 +02:00
isofs.h isofs: joliet: Fix iocharset=utf8 mount option 2021-08-12 16:07:14 +02:00
joliet.c isofs: joliet: Fix iocharset=utf8 mount option 2021-08-12 16:07:14 +02:00
namei.c isofs: release buffer head before return 2021-01-25 17:57:38 +01:00
rock.c isofs: convert to ctime accessor functions 2023-07-24 10:30:00 +02:00
rock.h fs: Replace zero-length array with flexible-array member 2020-10-29 17:22:59 -05:00
util.c Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs 2017-11-14 14:13:11 -08:00
zisofs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 142 2019-05-30 11:25:17 -07:00