On Wed, Jan 17, 2024 at 07:28:36PM -0300, Gabriel Krisman Bertazi wrote: > Note that, for strict mode, generic_ci_d_compare used to reject an > invalid UTF-8 string, which would now be considered valid if it > exact-matches the disk-name. But, if that is the case, the filesystem > is corrupt. More than that, it really doesn't matter in practice, > because the name-under-lookup will have already been rejected by > generic_ci_d_hash and we won't even get here. > - if (ret >= 0) > - return ret; > - > - if (sb_has_strict_encoding(sb)) > + qstr.len = len; > + qstr.name = str; > + ret = utf8_strncasecmp(dentry->d_sb->s_encoding, name, &qstr); > + if (ret < 0) > return -EINVAL; Umm... So why bother with -EINVAL? The rest looks sane, but considering the fact that your string *has* passed ->d_hash(), do we need anything beyond return utf8_strncasecmp(dentry->d_sb->s_encoding, name, &qstr); here?