mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 23:09:29 +02:00
modpost: add module as parameter to modpost_log()
modpost has a lot of error logging with module name, but the module name is logged in a plethora of ways. Add struct module * parameter to modpost_log(), and wrappers mod_warn() and mod_error(), to allow logging with a unified module name, if provided. If the module is provided, the messages will be of the format: (ERROR|WARNING): modpost: (modname.ko|vmlinux): message Actual conversion is done separately. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patch.msgid.link/f27bd8810f0ef12fb86068f0190e4e0afa81e0fa.1786120005.git.jani.nikula@intel.com Reviewed-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Nicolas Schier <nsc@kernel.org> Signed-off-by: Nicolas Schier <nsc@kernel.org>
This commit is contained in:
@@ -74,7 +74,7 @@ static unsigned int nr_unresolved;
|
||||
|
||||
#define MODULE_NAME_LEN (64 - sizeof(Elf_Addr))
|
||||
|
||||
void modpost_log(bool is_error, const char *fmt, ...)
|
||||
void modpost_log(bool is_error, struct module *mod, const char *fmt, ...)
|
||||
{
|
||||
va_list arglist;
|
||||
|
||||
@@ -87,11 +87,17 @@ void modpost_log(bool is_error, const char *fmt, ...)
|
||||
|
||||
fprintf(stderr, "modpost: ");
|
||||
|
||||
if (mod)
|
||||
fprintf(stderr, "%s%s: ", mod->name, mod->is_vmlinux ? "" : ".ko");
|
||||
|
||||
va_start(arglist, fmt);
|
||||
vfprintf(stderr, fmt, arglist);
|
||||
va_end(arglist);
|
||||
}
|
||||
|
||||
#define mod_warn(mod, fmt, args...) modpost_log(false, mod, fmt, ##args)
|
||||
#define mod_error(mod, fmt, args...) modpost_log(true, mod, fmt, ##args)
|
||||
|
||||
static inline bool strends(const char *str, const char *postfix)
|
||||
{
|
||||
if (strlen(str) < strlen(postfix))
|
||||
@@ -1772,7 +1778,7 @@ static void check_exports(struct module *mod)
|
||||
exp = find_symbol(s->name);
|
||||
if (!exp) {
|
||||
if (!s->weak && nr_unresolved++ < MAX_UNRESOLVED_REPORTS)
|
||||
modpost_log(!warn_unresolved,
|
||||
modpost_log(!warn_unresolved, NULL,
|
||||
"\"%s\" [%s.ko] undefined!\n",
|
||||
s->name, mod->name);
|
||||
continue;
|
||||
@@ -1792,7 +1798,7 @@ static void check_exports(struct module *mod)
|
||||
|
||||
if (!verify_module_namespace(exp->namespace, basename) &&
|
||||
!contains_namespace(&mod->imported_namespaces, exp->namespace)) {
|
||||
modpost_log(!allow_missing_ns_imports,
|
||||
modpost_log(!allow_missing_ns_imports, NULL,
|
||||
"module %s uses symbol %s from namespace %s, but does not import it.\n",
|
||||
basename, exp->name, exp->namespace);
|
||||
add_namespace(&mod->missing_namespaces, exp->namespace);
|
||||
|
||||
@@ -223,8 +223,8 @@ char *read_text_file(const char *filename);
|
||||
char *get_line(char **stringp);
|
||||
void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym);
|
||||
|
||||
void __attribute__((format(printf, 2, 3)))
|
||||
modpost_log(bool is_error, const char *fmt, ...);
|
||||
void __attribute__((format(printf, 3, 4)))
|
||||
modpost_log(bool is_error, struct module *mod, const char *fmt, ...);
|
||||
|
||||
/*
|
||||
* warn - show the given message, then let modpost continue running, still
|
||||
@@ -239,6 +239,6 @@ modpost_log(bool is_error, const char *fmt, ...);
|
||||
* fatal - show the given message, and bail out immediately. This should be
|
||||
* used when there is no point to continue running modpost.
|
||||
*/
|
||||
#define warn(fmt, args...) modpost_log(false, fmt, ##args)
|
||||
#define error(fmt, args...) modpost_log(true, fmt, ##args)
|
||||
#define warn(fmt, args...) modpost_log(false, NULL, fmt, ##args)
|
||||
#define error(fmt, args...) modpost_log(true, NULL, fmt, ##args)
|
||||
#define fatal(fmt, args...) do { error(fmt, ##args); exit(1); } while (1)
|
||||
|
||||
Reference in New Issue
Block a user