summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-08-22 15:49:36 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-08-22 15:49:36 -0700
commite13629f4df7e7159d82b11e43149308978103ec9 (patch)
tree772bfba422f771fa915565287a3ef6f5d16f8b96
parent66fb95a521110da673090294561844c9f76ebe64 (diff)
parenta511442085c140da9cdbe60e3f0fab1c71480801 (diff)
Merge tag 'unicode-for-next-7.3' of git://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode
Pull unicode updates from Gabriel Krisman Bertazi: "Two minor fixes: - Remove the normalization function that we no longer use (David Alan Gilbert)) - Fix a parsing issue in the encoding version argument passed by filesystems (me)" * tag 'unicode-for-next-7.3' of git://git.kernel.org/pub/scm/linux/kernel/git/krisman/unicode: unicode: Properly reject invalid encoding version strings utf8: Remove unused utf8_normalize
-rw-r--r--fs/unicode/utf8-core.c30
-rw-r--r--include/linux/unicode.h3
2 files changed, 5 insertions, 28 deletions
diff --git a/fs/unicode/utf8-core.c b/fs/unicode/utf8-core.c
index 543c60c12461..f313532f5e80 100644
--- a/fs/unicode/utf8-core.c
+++ b/fs/unicode/utf8-core.c
@@ -138,28 +138,6 @@ int utf8_casefold_hash(const struct unicode_map *um, const void *salt,
}
EXPORT_SYMBOL(utf8_casefold_hash);
-int utf8_normalize(const struct unicode_map *um, const struct qstr *str,
- unsigned char *dest, size_t dlen)
-{
- struct utf8cursor cur;
- ssize_t nlen = 0;
-
- if (utf8ncursor(&cur, um, UTF8_NFDI, str->name, str->len) < 0)
- return -EINVAL;
-
- for (nlen = 0; nlen < dlen; nlen++) {
- int c = utf8byte(&cur);
-
- dest[nlen] = c;
- if (!c)
- return nlen;
- if (c == -1)
- break;
- }
- return -EINVAL;
-}
-EXPORT_SYMBOL(utf8_normalize);
-
static const struct utf8data *find_table_version(const struct utf8data *table,
size_t nr_entries, unsigned int version)
{
@@ -226,17 +204,19 @@ int utf8_parse_version(char *version)
substring_t args[3];
unsigned int maj, min, rev;
static const struct match_token token[] = {
- {1, "%d.%d.%d"},
+ {1, "%u.%u.%u"},
{0, NULL}
};
if (match_token(version, token, args) != 1)
return -EINVAL;
- if (match_int(&args[0], &maj) || match_int(&args[1], &min) ||
- match_int(&args[2], &rev))
+ if (match_uint(&args[0], &maj) || match_uint(&args[1], &min) ||
+ match_uint(&args[2], &rev))
return -EINVAL;
+ if (maj > U8_MAX || min > U8_MAX || rev > U8_MAX)
+ return -EINVAL;
return UNICODE_AGE(maj, min, rev);
}
EXPORT_SYMBOL(utf8_parse_version);
diff --git a/include/linux/unicode.h b/include/linux/unicode.h
index 5e6b212a2aed..64fa44fe180c 100644
--- a/include/linux/unicode.h
+++ b/include/linux/unicode.h
@@ -66,9 +66,6 @@ int utf8_strncasecmp_folded(const struct unicode_map *um,
const struct qstr *cf,
const struct qstr *s1);
-int utf8_normalize(const struct unicode_map *um, const struct qstr *str,
- unsigned char *dest, size_t dlen);
-
int utf8_casefold(const struct unicode_map *um, const struct qstr *str,
unsigned char *dest, size_t dlen);