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 <kris...@suse.de>
Signed-off-by: Eugen Hristev <eugen.hris...@collabora.com>
---
 fs/f2fs/dir.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c
index cbd7a5e96a37..376f705aa3f1 100644
--- a/fs/f2fs/dir.c
+++ b/fs/f2fs/dir.c
@@ -192,11 +192,16 @@ 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 == -EINVAL)
+                       f2fs_warn_ratelimited(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



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to