On Thu, Mar 18, 2021 at 07:03:05PM +0530, Shreeya Patel wrote: > +struct unicode_ops { > + struct module *owner; > + int (*validate)(const struct unicode_map *um, const struct qstr *str); > + int (*strncmp)(const struct unicode_map *um, const struct qstr *s1, > + const struct qstr *s2); > + int (*strncasecmp)(const struct unicode_map *um, const struct qstr *s1, > + const struct qstr *s2); > + int (*strncasecmp_folded)(const struct unicode_map *um, const struct qstr *cf, > + const struct qstr *s1); > + int (*normalize)(const struct unicode_map *um, const struct qstr *str, > + unsigned char *dest, size_t dlen); > + int (*casefold)(const struct unicode_map *um, const struct qstr *str, > + unsigned char *dest, size_t dlen); > + int (*casefold_hash)(const struct unicode_map *um, const void *salt, > + struct qstr *str); > + struct unicode_map* (*load)(const char *version); > +}; Indirect calls are expensive these days, especially due to the Spectre mitigations. Would it make sense to use static calls (include/linux/static_call.h) instead for this? - Eric