exfat: Simplify exfat_utf8_d_cmp() for code points above U+FFFF
authorPali Rohár <pali@kernel.org>
Tue, 17 Mar 2020 21:34:33 +0000 (22:34 +0100)
committerNamjae Jeon <namjae.jeon@samsung.com>
Tue, 9 Jun 2020 07:48:28 +0000 (16:48 +0900)
If two Unicode code points represented in UTF-16 are different then also
their UTF-32 representation must be different. Therefore conversion from
UTF-32 to UTF-16 is not needed.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
fs/exfat/namei.c

index a2659a8a68a14273eeff16dd467d771ebe038b43..731da41cabbf7b9dfd38f001fc502573bfd6c078 100644 (file)
@@ -185,14 +185,9 @@ static int exfat_utf8_d_cmp(const struct dentry *dentry, unsigned int len,
                if (u_a <= 0xFFFF && u_b <= 0xFFFF) {
                        if (exfat_toupper(sb, u_a) != exfat_toupper(sb, u_b))
                                return 1;
-               } else if (u_a > 0xFFFF && u_b > 0xFFFF) {
-                       if (exfat_low_surrogate(u_a) !=
-                                       exfat_low_surrogate(u_b) ||
-                           exfat_high_surrogate(u_a) !=
-                                       exfat_high_surrogate(u_b))
-                               return 1;
                } else {
-                       return 1;
+                       if (u_a != u_b)
+                               return 1;
                }
        }