From: Emil Velikov Date: Sat, 18 Jul 2026 20:26:03 +0000 (+0100) Subject: modinfo: use kmod_module_get_initstate() for is_builtin X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa9c2dcd8b756a27ef903657f42ee0ac1dcd1f85;p=thirdparty%2Fkmod.git modinfo: use kmod_module_get_initstate() for is_builtin Currently we assume that the module is built-in if kmod_module_get_path() returns NULL... Which isn't quite true, since it can fail for a range of reasons. Use kmod_module_get_initstate() instead, which will incur in an extra open("/sys/module/.../initstate") + read() for non built-in modules. Signed-off-by: Emil Velikov Link: https://github.com/kmod-project/kmod/pull/451 Signed-off-by: Lucas De Marchi --- diff --git a/tools/modinfo.c b/tools/modinfo.c index 55e97da3..2457fd2a 100644 --- a/tools/modinfo.c +++ b/tools/modinfo.c @@ -157,19 +157,18 @@ end: static int modinfo_do(struct kmod_module *mod) { + const enum kmod_module_initstate state = kmod_module_get_initstate(mod); + const bool is_builtin = state == KMOD_MODULE_BUILTIN; + const char *filename = is_builtin ? "(builtin)" : kmod_module_get_path(mod); struct kmod_list *l, *list = NULL; struct param *params = NULL; - int err, is_builtin; - const char *filename = kmod_module_get_path(mod); - - is_builtin = (filename == NULL); + int err; if (is_builtin) { if (field == NULL) printf("%-16s%s%c", "name:", kmod_module_get_name(mod), separator); else if (field != NULL && streq(field, "name")) printf("%s%c", kmod_module_get_name(mod), separator); - filename = "(builtin)"; } if (field != NULL && streq(field, "filename")) {