* [PATCH 0/2] modpost: error logging cleanups
@ 2026-08-07 16:29 Jani Nikula
2026-08-07 16:29 ` [PATCH 1/2] modpost: add module as parameter to modpost_log() Jani Nikula
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Jani Nikula @ 2026-08-07 16:29 UTC (permalink / raw)
To: linux-kbuild, linux-kernel; +Cc: Nathan Chancellor, Nicolas Schier, jani.nikula
I was doing some refactoring, and kept hitting modpost errors and
warnings. It was getting a bit annoying that a lot of the modpost
messages have different formats for modules, and different quoting for
symbols, sections, and namespaces.
Clean them up a bit.
BR,
Jani.
Jani Nikula (2):
modpost: add module as parameter to modpost_log()
modpost: use mod_warn() and mod_error(), clean up logging
scripts/mod/modpost.c | 112 +++++++++++++++++++++---------------------
scripts/mod/modpost.h | 8 +--
2 files changed, 60 insertions(+), 60 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] modpost: add module as parameter to modpost_log()
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
@ 2026-08-07 16:29 ` Jani Nikula
2026-08-07 16:29 ` [PATCH 2/2] modpost: use mod_warn() and mod_error(), clean up logging Jani Nikula
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2026-08-07 16:29 UTC (permalink / raw)
To: linux-kbuild, linux-kernel; +Cc: Nathan Chancellor, Nicolas Schier, jani.nikula
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.
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
scripts/mod/modpost.c | 12 +++++++++---
scripts/mod/modpost.h | 8 ++++----
2 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index a7b72a81d248..240b45ff92f8 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -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);
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index 2aecb8f25c87..d5f6d82837d5 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -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)
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] modpost: use mod_warn() and mod_error(), clean up logging
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
2026-08-07 16:29 ` [PATCH 1/2] modpost: add module as parameter to modpost_log() Jani Nikula
@ 2026-08-07 16:29 ` Jani Nikula
2026-08-07 20:06 ` [PATCH 0/2] modpost: error logging cleanups Nicolas Schier
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2026-08-07 16:29 UTC (permalink / raw)
To: linux-kbuild, linux-kernel; +Cc: Nathan Chancellor, Nicolas Schier, jani.nikula
Convert all module name logging to use the mod_warn() and mod_error()
helpers, and pass the module to modpost_log() where used directly, to
always have the module name prefixed in the log message, with .ko suffix
for modules.
Pass struct module *mod around in a few places instead of just
mod->name.
Further unify the logging while at it. Use single quotes instead of
double quotes for symbols, sections, and namespaces. Explicitly state
it's a "symbol" when referencing symbols.
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Tip: easiest to review by applying and using 'git show --color-words'
---
scripts/mod/modpost.c | 104 ++++++++++++++++++++----------------------
1 file changed, 49 insertions(+), 55 deletions(-)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 240b45ff92f8..c2202cb2c434 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -365,9 +365,8 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod,
struct symbol *s = find_symbol(name);
if (s && (!external_module || s->module->is_vmlinux || s->module == mod)) {
- error("%s: '%s' exported twice. Previous export was in %s%s\n",
- mod->name, name, s->module->name,
- s->module->is_vmlinux ? "" : ".ko");
+ mod_error(mod, "symbol '%s' exported twice. Previous export was in %s%s\n",
+ name, s->module->name, s->module->is_vmlinux ? "" : ".ko");
}
s = alloc_symbol(name);
@@ -638,7 +637,7 @@ static void handle_symbol(struct module *mod, struct elf_info *info,
if (strstarts(symname, "__gnu_lto_")) {
/* Should warn here, but modpost runs before the linker */
} else
- warn("\"%s\" [%s] is COMMON symbol\n", symname, mod->name);
+ mod_warn(mod, "'%s' is COMMON symbol\n", symname);
break;
case SHN_UNDEF:
/* undefined symbol */
@@ -781,7 +780,7 @@ static const char *const section_white_list[] =
* The cause of this is often a section specified in assembler
* without "ax" / "aw".
*/
-static void check_section(const char *modname, struct elf_info *elf,
+static void check_section(struct module *mod, struct elf_info *elf,
Elf_Shdr *sechdr)
{
const char *sec = sech_name(elf, sechdr);
@@ -789,11 +788,11 @@ static void check_section(const char *modname, struct elf_info *elf,
if (sechdr->sh_type == SHT_PROGBITS &&
!(sechdr->sh_flags & SHF_ALLOC) &&
!match(sec, section_white_list)) {
- warn("%s (%s): unexpected non-allocatable section.\n"
- "Did you forget to use \"ax\"/\"aw\" in a .S file?\n"
- "Note that for example <linux/init.h> contains\n"
- "section definitions for use in .S files.\n\n",
- modname, sec);
+ mod_warn(mod, "unexpected non-allocatable section '%s'.\n"
+ "Did you forget to use \"ax\"/\"aw\" in a .S file?\n"
+ "Note that for example <linux/init.h> contains\n"
+ "section definitions for use in .S files.\n\n",
+ sec);
}
}
@@ -1027,7 +1026,7 @@ static bool is_executable_section(struct elf_info *elf, unsigned int secndx)
return (elf->sechdrs[secndx].sh_flags & SHF_EXECINSTR) != 0;
}
-static void default_mismatch_handler(const char *modname, struct elf_info *elf,
+static void default_mismatch_handler(struct module *mod, struct elf_info *elf,
const struct sectioncheck* const mismatch,
Elf_Sym *tsym,
unsigned int fsecndx, const char *fromsec, Elf_Addr faddr,
@@ -1057,10 +1056,10 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,
* The format for the reference source: <symbol_name>+<offset> or <address>
* The format for the reference destination: <symbol_name> or <address>
*/
- warn("%s: section mismatch in reference: %s%s0x%x (section: %s) -> %s (section: %s)\n",
- modname, fromsym, fromsym[0] ? "+" : "",
- (unsigned int)(faddr - (fromsym[0] ? from->st_value : 0)),
- fromsec, tosym[0] ? tosym : taddr_str, tosec);
+ mod_warn(mod, "section mismatch in reference: %s%s0x%x (section: %s) -> %s (section: %s)\n",
+ fromsym, fromsym[0] ? "+" : "",
+ (unsigned int)(faddr - (fromsym[0] ? from->st_value : 0)),
+ fromsec, tosym[0] ? tosym : taddr_str, tosec);
if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {
if (match(tosec, mismatch->bad_tosec))
@@ -1069,7 +1068,7 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,
"Something is seriously wrong and should be fixed.\n"
"You might get more information about where this is\n"
"coming from by using scripts/check_extable.sh %s\n",
- fromsec, (long)faddr, tosec, modname);
+ fromsec, (long)faddr, tosec, mod->name);
else if (is_executable_section(elf, get_secindex(elf, tsym)))
warn("The relocation at %s+0x%lx references\n"
"section \"%s\" which is not in the list of\n"
@@ -1099,22 +1098,22 @@ static void check_export_symbol(struct module *mod, struct elf_info *elf,
label_name = sym_name(elf, label);
if (!strstarts(label_name, prefix)) {
- error("%s: .export_symbol section contains strange symbol '%s'\n",
- mod->name, label_name);
+ mod_error(mod, ".export_symbol section contains strange symbol '%s'\n",
+ label_name);
return;
}
if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL &&
ELF_ST_BIND(sym->st_info) != STB_WEAK) {
- error("%s: local symbol '%s' was exported\n", mod->name,
- label_name + strlen(prefix));
+ mod_error(mod, "local symbol '%s' was exported\n",
+ label_name + strlen(prefix));
return;
}
name = sym_name(elf, sym);
if (strcmp(label_name + strlen(prefix), name)) {
- error("%s: .export_symbol section references '%s', but it does not seem to be an export symbol\n",
- mod->name, name);
+ mod_error(mod, ".export_symbol section references '%s', but it does not seem to be an export symbol\n",
+ name);
return;
}
@@ -1124,8 +1123,8 @@ static void check_export_symbol(struct module *mod, struct elf_info *elf,
} else if (!strcmp(data, "")) {
is_gpl = false;
} else {
- error("%s: unknown license '%s' was specified for '%s'\n",
- mod->name, data, name);
+ mod_error(mod, "unknown license '%s' was specified for '%s'\n",
+ data, name);
return;
}
@@ -1148,11 +1147,11 @@ static void check_export_symbol(struct module *mod, struct elf_info *elf,
s->is_func = true;
if (match(secname, PATTERNS(ALL_INIT_SECTIONS)))
- warn("%s: %s: EXPORT_SYMBOL used for init symbol. Remove __init or EXPORT_SYMBOL.\n",
- mod->name, name);
+ mod_warn(mod, "EXPORT_SYMBOL used for init symbol '%s'. Remove __init or EXPORT_SYMBOL.\n",
+ name);
else if (match(secname, PATTERNS(ALL_EXIT_SECTIONS)))
- warn("%s: %s: EXPORT_SYMBOL used for exit symbol. Remove __exit or EXPORT_SYMBOL.\n",
- mod->name, name);
+ mod_warn(mod, "EXPORT_SYMBOL used for exit symbol '%s'. Remove __exit or EXPORT_SYMBOL.\n",
+ name);
}
static void check_section_mismatch(struct module *mod, struct elf_info *elf,
@@ -1172,7 +1171,7 @@ static void check_section_mismatch(struct module *mod, struct elf_info *elf,
if (!mismatch)
return;
- default_mismatch_handler(mod->name, elf, mismatch, sym,
+ default_mismatch_handler(mod, elf, mismatch, sym,
fsecndx, fromsec, faddr,
tosec, taddr);
}
@@ -1449,7 +1448,7 @@ static void check_sec_ref(struct module *mod, struct elf_info *elf)
for (i = 0; i < elf->num_sections; i++) {
Elf_Shdr *sechdr = &elf->sechdrs[i];
- check_section(mod->name, elf, sechdr);
+ check_section(mod, elf, sechdr);
/* We want to process only relocation sections and not .init */
if (sechdr->sh_type == SHT_REL || sechdr->sh_type == SHT_RELA) {
/* section to which the relocation applies */
@@ -1619,7 +1618,7 @@ static void read_symbols(const char *modname)
if (!mod->is_vmlinux) {
license = get_modinfo(&info, "license");
if (!license)
- error("missing MODULE_LICENSE() in %s\n", modname);
+ mod_error(mod, "missing MODULE_LICENSE()\n");
while (license) {
if (!license_is_gpl_compatible(license)) {
mod->is_gpl_compatible = false;
@@ -1632,14 +1631,14 @@ static void read_symbols(const char *modname)
namespace;
namespace = get_next_modinfo(&info, "import_ns", namespace)) {
if (strstarts(namespace, MODULE_NS_PREFIX))
- error("%s: explicitly importing namespace \"%s\" is not allowed.\n",
- mod->name, namespace);
+ mod_error(mod, "explicitly importing namespace '%s' is not allowed.\n",
+ namespace);
add_namespace(&mod->imported_namespaces, namespace);
}
if (!get_modinfo(&info, "description"))
- warn("missing MODULE_DESCRIPTION() in %s\n", modname);
+ mod_warn(mod, "missing MODULE_DESCRIPTION()\n");
}
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
@@ -1778,14 +1777,13 @@ 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, NULL,
- "\"%s\" [%s.ko] undefined!\n",
- s->name, mod->name);
+ modpost_log(!warn_unresolved, mod,
+ "symbol '%s' undefined!\n",
+ s->name);
continue;
}
if (exp->module == mod) {
- error("\"%s\" [%s.ko] was exported without definition\n",
- s->name, mod->name);
+ mod_error(mod, "symbol '%s' was exported without definition\n", s->name);
continue;
}
@@ -1798,15 +1796,15 @@ 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, NULL,
- "module %s uses symbol %s from namespace %s, but does not import it.\n",
- basename, exp->name, exp->namespace);
+ modpost_log(!allow_missing_ns_imports, mod,
+ "module uses symbol '%s' from namespace '%s', but does not import it.\n",
+ exp->name, exp->namespace);
add_namespace(&mod->missing_namespaces, exp->namespace);
}
if (!mod->is_gpl_compatible && exp->is_gpl_only)
- error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
- basename, exp->name);
+ mod_error(mod, "GPL-incompatible module uses GPL-only symbol '%s'\n",
+ exp->name);
}
}
@@ -1856,7 +1854,7 @@ static void check_modname_len(struct module *mod)
mod_name = get_basename(mod->name);
if (strlen(mod_name) >= MODULE_NAME_LEN)
- error("module name is too long [%s.ko]\n", mod->name);
+ mod_error(mod, "module name is too long\n");
}
/**
@@ -1920,10 +1918,9 @@ static void add_exported_symbols(struct buffer *buf, struct module *mod)
continue;
if (!sym->crc_valid)
- warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n"
- "Is \"%s\" prototyped in <asm/asm-prototypes.h>?\n",
- sym->name, mod->name, mod->is_vmlinux ? "" : ".ko",
- sym->name);
+ mod_warn(mod, "EXPORT symbol '%s' version generation failed, symbol will not be versioned.\n"
+ "Is '%s' prototyped in <asm/asm-prototypes.h>?\n",
+ sym->name, sym->name);
buf_printf(buf, "SYMBOL_CRC(%s, 0x%08x);\n",
sym->name, sym->crc);
@@ -1947,8 +1944,7 @@ static void add_extended_versions(struct buffer *b, struct module *mod)
if (!s->module)
continue;
if (!s->crc_valid) {
- warn("\"%s\" [%s.ko] has no CRC!\n",
- s->name, mod->name);
+ mod_warn(mod, "symbol '%s' has no CRC!\n", s->name);
continue;
}
buf_printf(b, "\t0x%08x,\n", s->crc);
@@ -1991,8 +1987,7 @@ static void add_versions(struct buffer *b, struct module *mod)
if (!s->module)
continue;
if (!s->crc_valid) {
- warn("\"%s\" [%s.ko] has no CRC!\n",
- s->name, mod->name);
+ mod_warn(mod, "symbol '%s' has no CRC!\n", s->name);
continue;
}
if (strlen(s->name) >= MODULE_NAME_LEN) {
@@ -2000,8 +1995,7 @@ static void add_versions(struct buffer *b, struct module *mod)
/* this symbol will only be in the extended info */
continue;
} else {
- error("too long symbol \"%s\" [%s.ko]\n",
- s->name, mod->name);
+ mod_error(mod, "too long symbol '%s'\n", s->name);
break;
}
}
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] modpost: error logging cleanups
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
2026-08-07 16:29 ` [PATCH 1/2] modpost: add module as parameter to modpost_log() Jani Nikula
2026-08-07 16:29 ` [PATCH 2/2] modpost: use mod_warn() and mod_error(), clean up logging Jani Nikula
@ 2026-08-07 20:06 ` Nicolas Schier
2026-08-07 20:10 ` Nicolas Schier
2026-08-07 21:22 ` Nathan Chancellor
4 siblings, 0 replies; 6+ messages in thread
From: Nicolas Schier @ 2026-08-07 20:06 UTC (permalink / raw)
To: Jani Nikula; +Cc: linux-kbuild, linux-kernel, Nathan Chancellor, Nicolas Schier
> I was doing some refactoring, and kept hitting modpost errors and
> warnings. It was getting a bit annoying that a lot of the modpost
> messages have different formats for modules, and different quoting for
> symbols, sections, and namespaces.
>
> Clean them up a bit.
>
> BR,
> Jani.
>
> Jani Nikula (2):
> modpost: add module as parameter to modpost_log()
> modpost: use mod_warn() and mod_error(), clean up logging
>
> scripts/mod/modpost.c | 112 +++++++++++++++++++++---------------------
> scripts/mod/modpost.h | 8 +--
> 2 files changed, 60 insertions(+), 60 deletions(-)
>
> --
> 2.47.3
Thanks for the cleanup! Looks good to me.
Reviewed-by: Nicolas Schier <nsc@kernel.org>
--
Nicolas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] modpost: error logging cleanups
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
` (2 preceding siblings ...)
2026-08-07 20:06 ` [PATCH 0/2] modpost: error logging cleanups Nicolas Schier
@ 2026-08-07 20:10 ` Nicolas Schier
2026-08-07 21:22 ` Nathan Chancellor
4 siblings, 0 replies; 6+ messages in thread
From: Nicolas Schier @ 2026-08-07 20:10 UTC (permalink / raw)
To: linux-kbuild, linux-kernel, Jani Nikula; +Cc: Nathan Chancellor
On Fri, 07 Aug 2026 19:29:39 +0300, Jani Nikula wrote:
> modpost: error logging cleanups
>
> I was doing some refactoring, and kept hitting modpost errors and
> warnings. It was getting a bit annoying that a lot of the modpost
> messages have different formats for modules, and different quoting for
> symbols, sections, and namespaces.
>
> [...]
Applied to kbuild/linux.git (kbuild-next-unstable), thanks!
[1/2] modpost: add module as parameter to modpost_log()
https://git.kernel.org/kbuild/c/ae3de10f
[2/2] modpost: use mod_warn() and mod_error(), clean up logging
https://git.kernel.org/kbuild/c/bbeb002c
Please look out for regression or issue reports or other follow up
comments, as they may result in the patch/series getting dropped,
reverted or modified (e.g. trailers).
Patches applied to the kbuild-next-unstable branch are accepted pending
wider testing in linux-next and any post-commit review; they will
generally be moved to the kbuild-next branch in about a week if no
issues are found.
Best regards,
--
Nicolas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] modpost: error logging cleanups
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
` (3 preceding siblings ...)
2026-08-07 20:10 ` Nicolas Schier
@ 2026-08-07 21:22 ` Nathan Chancellor
4 siblings, 0 replies; 6+ messages in thread
From: Nathan Chancellor @ 2026-08-07 21:22 UTC (permalink / raw)
To: Jani Nikula; +Cc: linux-kbuild, linux-kernel, Nathan Chancellor, Nicolas Schier
> I was doing some refactoring, and kept hitting modpost errors and
> warnings. It was getting a bit annoying that a lot of the modpost
> messages have different formats for modules, and different quoting for
> symbols, sections, and namespaces.
>
> Clean them up a bit.
>
> Jani Nikula (2):
> modpost: add module as parameter to modpost_log()
> modpost: use mod_warn() and mod_error(), clean up logging
>
> scripts/mod/modpost.c | 112 +++++++++++++++++++++---------------------
> scripts/mod/modpost.h | 8 +--
> 2 files changed, 60 insertions(+), 60 deletions(-)
Thanks, this definitely seems like a nice cleanup! I have definitely
noticed how inconsistently modpost messages were formmatted in the past.
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
--
Cheers,
Nathan
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-08-07 21:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-07 16:29 [PATCH 0/2] modpost: error logging cleanups Jani Nikula
2026-08-07 16:29 ` [PATCH 1/2] modpost: add module as parameter to modpost_log() Jani Nikula
2026-08-07 16:29 ` [PATCH 2/2] modpost: use mod_warn() and mod_error(), clean up logging Jani Nikula
2026-08-07 20:06 ` [PATCH 0/2] modpost: error logging cleanups Nicolas Schier
2026-08-07 20:10 ` Nicolas Schier
2026-08-07 21:22 ` Nathan Chancellor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox