Messages in this thread Patch in this message | | | From | Eugen Hristev <> | Subject | [PATCH v14 7/9] f2fs: Log error when lookup of encoded dentry fails | Date | Wed, 20 Mar 2024 10:46:20 +0200 |
| |
If the volume is in strict mode, generi c_ci_compare can report a broken encoding name. This will not trigger on a bad lookup, which is caught earlier, only if the actual disk name is bad.
Suggested-by: Gabriel Krisman Bertazi <krisman@suse.de> Signed-off-by: Eugen Hristev <eugen.hristev@collabora.com> --- fs/f2fs/dir.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index 88b0045d0c4f..3b0003e8767a 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -192,11 +192,22 @@ static inline int f2fs_match_name(const struct inode *dir, struct fscrypt_name f; #if IS_ENABLED(CONFIG_UNICODE) - if (fname->cf_name.name) - return generic_ci_match(dir, fname->usr_fname, - &fname->cf_name, - de_name, de_name_len); - + if (fname->cf_name.name) { + int ret = generic_ci_match(dir, fname->usr_fname, + &fname->cf_name, + de_name, de_name_len); + if (ret < 0) { + /* + * Treat comparison errors as not a match. The + * only case where it happens is on a disk + * corruption or ENOMEM. + */ + if (ret == -EINVAL) + f2fs_warn(F2FS_SB(dir->i_sb), + "Directory contains filename that is invalid UTF-8"); + } + return ret; + } #endif f.usr_fname = fname->usr_fname; f.disk_name = fname->disk_name; -- 2.34.1
| |