ext4: introduce linear search for dentries
[ Upstream commit 9e28059d ] This patch addresses an issue where some files in case-insensitive directories become inaccessible due to changes in how the kernel function, utf8_casefold(), generates case-folded strings from the commit 5c26d2f1 ("unicode: Don't special case ignorable code points"). There are good reasons why this change should be made; it's actually quite stupid that Unicode seems to think that the characters❤️ and❤️ should be casefolded. Unfortimately because of the backwards compatibility issue, this commit was reverted in 231825b2. This problem is addressed by instituting a brute-force linear fallback if a lookup fails on case-folded directory, which does result in a performance hit when looking up files affected by the changing how thekernel treats ignorable Uniode characters, or when attempting to look up non-existent file names. So this fallback can be disabled by setting an encoding flag if in the future, the system administrator or the manufacturer of a mobile handset or tablet can be sure that there was no opportunity for a kernel to insert file names with incompatible encodings. Fixes: 5c26d2f1 ("unicode: Don't special case ignorable code points") Signed-off-by:Theodore Ts'o <tytso@mit.edu> Reviewed-by:
Gabriel Krisman Bertazi <krisman@suse.de> Signed-off-by:
Sasha Levin <sashal@kernel.org>
Loading