I think the patch subject is stale. MODULE_ was the prefix in the previous v2 series.
Now, the prefix part is module: On Fri, May 2, 2025 at 11:25 PM Peter Zijlstra <pet...@infradead.org> wrote: > > Instead of only accepting "module:${name}", extend it with a comma > separated list of module names and add tail glob support. > > That is, something like: "module:foo-*,bar" is now possible. > > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > --- > kernel/module/main.c | 36 ++++++++++++++++++++++++++++++++++-- > scripts/mod/modpost.c | 36 ++++++++++++++++++++++++++++++++++-- > 2 files changed, 68 insertions(+), 4 deletions(-) > > --- a/kernel/module/main.c > +++ b/kernel/module/main.c > @@ -1083,12 +1083,44 @@ static char *get_modinfo(const struct lo > return get_next_modinfo(info, tag, NULL); > } > > +/** > + * verify_module_namespace() - does @modname have access to this symbol's > @namespace > + * @namespace: export symbol namespace > + * @modname: module name > + * > + * If @namespace is prefixed with "module:" to indicate it is a module > namespace > + * then test if @modname matches any of the comma separated patterns. > + * > + * The patterns only support tail-glob. > + */ > static bool verify_module_namespace(const char *namespace, const char > *modname) > { > + size_t len, modlen = strlen(modname); > const char *prefix = "module:"; > + const char *sep; > + bool glob; > > - return strstarts(namespace, prefix) && > - !strsmp(namespace + strlen(prefix), modname); > + if (!strstarts(namespace, prefix)) > + return false; > + > + for (namespace += strlen(prefix); *namespace; namespace = sep) { > + sep = strchrnul(namespace, ','); > + len = sep - namespace; > + > + glob = false; > + if (sep[-1] == '*') { > + len--; > + glob = true; > + } > + > + if (*sep) > + sep++; > + > + if (strncmp(namespace, modname, len) == 0 && (glob || len == > modlen)) > + return true; > + } > + > + return false; > } > > static int verify_namespace_is_imported(const struct load_info *info, > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -1682,12 +1682,44 @@ void buf_write(struct buffer *buf, const > buf->pos += len; > } > > +/** > + * verify_module_namespace() - does @modname have access to this symbol's > @namespace > + * @namespace: export symbol namespace > + * @modname: module name > + * > + * If @namespace is prefixed with "module:" to indicate it is a module > namespace > + * then test if @modname matches any of the comma separated patterns. > + * > + * The patterns only support tail-glob. > + */ > static bool verify_module_namespace(const char *namespace, const char > *modname) > { > + size_t len, modlen = strlen(modname); > const char *prefix = "module:"; > + const char *sep; > + bool glob; > > - return strstarts(namespace, prefix) && > - !strcmp(namespace + strlen(prefix), modname); > + if (!strstarts(namespace, prefix)) > + return false; > + > + for (namespace += strlen(prefix); *namespace; namespace = sep) { > + sep = strchrnul(namespace, ','); > + len = sep - namespace; > + > + glob = false; > + if (sep[-1] == '*') { > + len--; > + glob = true; > + } > + > + if (*sep) > + sep++; > + > + if (strncmp(namespace, modname, len) == 0 && (glob || len == > modlen)) > + return true; > + } > + > + return false; > } > > static void check_exports(struct module *mod) > > -- Best Regards Masahiro Yamada