2022-09-13 1:14 GMT+09:00, Atte Heikkilä <atteh.mailbox@xxxxxxxxx>: > On Mon, 12 Sep 2022 19:20:54 +0900, Namjae Jeon wrote: >>2022-09-12 5:57 GMT+09:00, Atte Heikkilä <atteh.mailbox@xxxxxxxxx>: >>Hi Atte, >> >>[snip] >>> +static char *casefold_sharename(struct unicode_map *um, const char >>> *name>) >>> +{ >>> + char *cf_name; >>> + int cf_len; >>> + >>> + cf_name = kzalloc(KSMBD_REQ_MAX_SHARE_NAME, GFP_KERNEL); >>> + if (!cf_name) >>> + return ERR_PTR(-ENOMEM); >>> + >>> + if (IS_ENABLED(CONFIG_UNICODE)) { >>> + const struct qstr q_name = {.name = name, .len = strlen(name)}; >>> + >>> + if (!um) >>> + goto out_ascii; >>Minor nit, Wouldn't it be simpler to change something like the one below? >> >>+ if (IS_ENABLED(CONFIG_UNICODE) && um) { > > This mailing list already has a v2 patch series. Please, reply to that one. Okay, but please add cc me when you send the patch to the list. > As for your suggestion, I thought to keep the statements separate since the > block with the IS_ENABLED() macro is optimized away when CONFIG_UNICODE is > not set. I understand that the behavior is the same with your suggestion. When CONFIG_UNICODE is not set, um is not checked in my suggestion. Please tell me why my suggestion is worse. if you are okay, I will update it directly.(i.e. no need to send v3 patch). and please check the use of strncasecmp() in __caseless_lookup() also. And I need to do full test for this patches, I think it will take about two days. > > Thank you. > >> >>Thanks! >>> + >>> + cf_len = utf8_casefold(um, &q_name, cf_name, >>> + KSMBD_REQ_MAX_SHARE_NAME); >>> + if (cf_len < 0) >>> + goto out_ascii; >>> + >>> + return cf_name; >>> + } >>> + >>> +out_ascii: >>> + cf_len = strscpy(cf_name, name, KSMBD_REQ_MAX_SHARE_NAME); >>> + if (cf_len < 0) >>> + return ERR_PTR(-E2BIG); >>> + >>> + for (; *cf_name; ++cf_name) >>> + *cf_name = isascii(*cf_name) ? tolower(*cf_name) : *cf_name; >>> + return cf_name - cf_len; >>> +} >>> + >