When the module is definitely present but CONFIG_MODVERSIONS is
disabled, the following error message may be somewhat confusing:
modprobe --dump-modversions /path/to/module.ko.xz
modprobe: FATAL: could not get modversions of /path/to/module.ko.xz: No such file or directory
Choosing among the convenient errno values, I would suggest to use
ENODATA when the module lacks a particular ELF section (and vermagic
as well). So now it is expected to be:
modprobe: FATAL: could not get modversions of /path/to/module.ko.xz: No data available
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Link: https://lore.kernel.org/r/20230519093630.474185-1-dmantipov@yandex.ru
return i;
}
- return -ENOENT;
+ return -ENODATA;
}
int kmod_elf_get_section(const struct kmod_elf *elf, const char *section, const void **buf, uint64_t *buf_size)
return 0;
}
- return -ENOENT;
+ return -ENODATA;
}
/* array will be allocated with strings in a single malloc, just free *array */
}
ELFDBG(elf, "no vermagic found in .modinfo\n");
- return -ENOENT;
+ return -ENODATA;
}
struct kmod_list *l, *list = NULL;
int err = kmod_module_get_symbols(mod->kmod, &list);
if (err < 0) {
- if (err == -ENOENT)
+ if (err == -ENODATA)
DBG("ignoring %s: no symbols\n", mod->path);
else
ERR("failed to load symbols from %s: %s\n",