linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/5] modpost: rename merror() to error()
@ 2020-12-01 10:34 Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference Masahiro Yamada
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-01 10:34 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Quentin Perret, Masahiro Yamada, Michal Marek, linux-kernel

The log function names, warn(), merror(), fatal() are inconsistent.

Commit 2a11665945d5 ("kbuild: distinguish between errors and warnings
in modpost") intentionally chose merror() to avoid the conflict with
the library function error(). See man page of error(3).

But, we are already causing the conflict with warn() because it is also
a library function. See man page of warn(3). err() would be a problem
for the same reason.

The common technique to work around name conflicts is to use macros.

    #define error __error
    void __error(const char *fmt, ...)
    {
            <our own implementation>
    }

    #define warn __warn
    void __warn(const char *fmt, ...)
    {
            <our own implementation>
    }

In this way, we can implement our own warn() and error(), still we can
include <error.h> and <err.h> with no problem.

And, commit 93c95e526a4e ("modpost: rework and consolidate logging
interface") already did that.

Since the log functions are all macros, we can use error() without
causing "conflicting types" errors.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/mod/modpost.c | 10 +++++-----
 scripts/mod/modpost.h |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index f882ce0d9327..337f6ca4bda3 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -403,8 +403,8 @@ static void sym_update_namespace(const char *symname, const char *namespace)
 	 * actually an assertion.
 	 */
 	if (!s) {
-		merror("Could not update namespace(%s) for symbol %s\n",
-		       namespace, symname);
+		error("Could not update namespace(%s) for symbol %s\n",
+		      namespace, symname);
 		return;
 	}
 
@@ -2226,7 +2226,7 @@ static int check_modname_len(struct module *mod)
 	else
 		mod_name++;
 	if (strlen(mod_name) >= MODULE_NAME_LEN) {
-		merror("module name is too long [%s.ko]\n", mod->name);
+		error("module name is too long [%s.ko]\n", mod->name);
 		return 1;
 	}
 
@@ -2319,8 +2319,8 @@ static int add_versions(struct buffer *b, struct module *mod)
 			continue;
 		}
 		if (strlen(s->name) >= MODULE_NAME_LEN) {
-			merror("too long symbol \"%s\" [%s.ko]\n",
-			       s->name, mod->name);
+			error("too long symbol \"%s\" [%s.ko]\n",
+			      s->name, mod->name);
 			err = 1;
 			break;
 		}
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index 3aa052722233..f453504ad4df 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -202,5 +202,5 @@ enum loglevel {
 void modpost_log(enum loglevel loglevel, const char *fmt, ...);
 
 #define warn(fmt, args...)	modpost_log(LOG_WARN, fmt, ##args)
-#define merror(fmt, args...)	modpost_log(LOG_ERROR, fmt, ##args)
+#define error(fmt, args...)	modpost_log(LOG_ERROR, fmt, ##args)
 #define fatal(fmt, args...)	modpost_log(LOG_FATAL, fmt, ##args)
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference
  2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
@ 2020-12-01 10:34 ` Masahiro Yamada
  2020-12-01 16:47   ` Quentin Perret
  2020-12-01 10:34 ` [PATCH 3/5] modpost: turn missing MODULE_LICENSE() into error Masahiro Yamada
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-01 10:34 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Quentin Perret, Masahiro Yamada, Michal Marek, linux-kernel

We have 3 log functions. fatal() is special because it lets modpost bail
out immediately. The difference between warn() and error() is the only
prefix parts ("WARNING:" vs "ERROR:").

The intended usage of error() is probably to propagate the return code
from the function to the exit code of modpost, as check_exports() etc.
already does. This is a good manner because we should display as many
issues as possible in a single run of modpost.

What is annoying about fatal() is that it kills modpost at the first
error. People would need to run Kbuild again and again until they fix
all errors.

But, unfortunately, people tend to do:
"This case should not be allowed. Let's replace warn() with fatal()."

One of the reasons is probably it is tedious to manually carry the error
code back to the main() function.

This commit refactors error() so any single call for it automatically
makes modpost return the error code.

I also added comments in modpost.h for warn(), error(), and fatal().

Again, please use fatal() only when you have a strong reason to do so.
For example:

  - Memory shortage (i.e. malloc() etc. has failed)
  - The ELF file is broken, and there is no point to continue parsing
  - Something really odd has happened

For general coding errors, please use error().

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/mod/modpost.c | 43 ++++++++++++++-----------------------------
 scripts/mod/modpost.h | 13 +++++++++++++
 2 files changed, 27 insertions(+), 29 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 337f6ca4bda3..43e00867623a 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -40,6 +40,8 @@ static int ignore_missing_files;
 /* If set to 1, only warn (instead of error) about missing ns imports */
 static int allow_missing_ns_imports;
 
+static bool error_occurred;
+
 enum export {
 	export_plain,      export_unused,     export_gpl,
 	export_unused_gpl, export_gpl_future, export_unknown
@@ -78,6 +80,8 @@ modpost_log(enum loglevel loglevel, const char *fmt, ...)
 
 	if (loglevel == LOG_FATAL)
 		exit(1);
+	if (loglevel == LOG_ERROR)
+		error_occurred = true;
 }
 
 static inline bool strends(const char *str, const char *postfix)
@@ -2174,22 +2178,18 @@ static void check_for_unused(enum export exp, const char *m, const char *s)
 	}
 }
 
-static int check_exports(struct module *mod)
+static void check_exports(struct module *mod)
 {
 	struct symbol *s, *exp;
-	int err = 0;
 
 	for (s = mod->unres; s; s = s->next) {
 		const char *basename;
 		exp = find_symbol(s->name);
 		if (!exp || exp->module == mod) {
-			if (have_vmlinux && !s->weak) {
+			if (have_vmlinux && !s->weak)
 				modpost_log(warn_unresolved ? LOG_WARN : LOG_ERROR,
 					    "\"%s\" [%s.ko] undefined!\n",
 					    s->name, mod->name);
-				if (!warn_unresolved)
-					err = 1;
-			}
 			continue;
 		}
 		basename = strrchr(mod->name, '/');
@@ -2203,8 +2203,6 @@ static int check_exports(struct module *mod)
 			modpost_log(allow_missing_ns_imports ? LOG_WARN : LOG_ERROR,
 				    "module %s uses symbol %s from namespace %s, but does not import it.\n",
 				    basename, exp->name, exp->namespace);
-			if (!allow_missing_ns_imports)
-				err = 1;
 			add_namespace(&mod->missing_namespaces, exp->namespace);
 		}
 
@@ -2212,11 +2210,9 @@ static int check_exports(struct module *mod)
 			check_for_gpl_usage(exp->export, basename, exp->name);
 		check_for_unused(exp->export, basename, exp->name);
 	}
-
-	return err;
 }
 
-static int check_modname_len(struct module *mod)
+static void check_modname_len(struct module *mod)
 {
 	const char *mod_name;
 
@@ -2225,12 +2221,8 @@ static int check_modname_len(struct module *mod)
 		mod_name = mod->name;
 	else
 		mod_name++;
-	if (strlen(mod_name) >= MODULE_NAME_LEN) {
+	if (strlen(mod_name) >= MODULE_NAME_LEN)
 		error("module name is too long [%s.ko]\n", mod->name);
-		return 1;
-	}
-
-	return 0;
 }
 
 /**
@@ -2289,10 +2281,9 @@ static void add_staging_flag(struct buffer *b, const char *name)
 /**
  * Record CRCs for unresolved symbols
  **/
-static int add_versions(struct buffer *b, struct module *mod)
+static void add_versions(struct buffer *b, struct module *mod)
 {
 	struct symbol *s, *exp;
-	int err = 0;
 
 	for (s = mod->unres; s; s = s->next) {
 		exp = find_symbol(s->name);
@@ -2304,7 +2295,7 @@ static int add_versions(struct buffer *b, struct module *mod)
 	}
 
 	if (!modversions)
-		return err;
+		return;
 
 	buf_printf(b, "\n");
 	buf_printf(b, "static const struct modversion_info ____versions[]\n");
@@ -2321,7 +2312,6 @@ static int add_versions(struct buffer *b, struct module *mod)
 		if (strlen(s->name) >= MODULE_NAME_LEN) {
 			error("too long symbol \"%s\" [%s.ko]\n",
 			      s->name, mod->name);
-			err = 1;
 			break;
 		}
 		buf_printf(b, "\t{ %#8x, \"%s\" },\n",
@@ -2329,8 +2319,6 @@ static int add_versions(struct buffer *b, struct module *mod)
 	}
 
 	buf_printf(b, "};\n");
-
-	return err;
 }
 
 static void add_depends(struct buffer *b, struct module *mod)
@@ -2554,7 +2542,6 @@ int main(int argc, char **argv)
 	char *missing_namespace_deps = NULL;
 	char *dump_write = NULL, *files_source = NULL;
 	int opt;
-	int err;
 	int n;
 	struct dump_list *dump_read_start = NULL;
 	struct dump_list **dump_read_iter = &dump_read_start;
@@ -2624,8 +2611,6 @@ int main(int argc, char **argv)
 	if (!have_vmlinux)
 		warn("Symbol info of vmlinux is missing. Unresolved symbol check will be entirely skipped.\n");
 
-	err = 0;
-
 	for (mod = modules; mod; mod = mod->next) {
 		char fname[PATH_MAX];
 
@@ -2634,14 +2619,14 @@ int main(int argc, char **argv)
 
 		buf.pos = 0;
 
-		err |= check_modname_len(mod);
-		err |= check_exports(mod);
+		check_modname_len(mod);
+		check_exports(mod);
 
 		add_header(&buf, mod);
 		add_intree_flag(&buf, !external_module);
 		add_retpoline(&buf);
 		add_staging_flag(&buf, mod->name);
-		err |= add_versions(&buf, mod);
+		add_versions(&buf, mod);
 		add_depends(&buf, mod);
 		add_moddevtable(&buf, mod);
 		add_srcversion(&buf, mod);
@@ -2671,5 +2656,5 @@ int main(int argc, char **argv)
 
 	free(buf.p);
 
-	return err;
+	return error_occurred ? 1 : 0;
 }
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index f453504ad4df..e6f46eee0af0 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -201,6 +201,19 @@ enum loglevel {
 
 void modpost_log(enum loglevel loglevel, const char *fmt, ...);
 
+/*
+ * warn - show the given message, then let modpost continue running, still
+ *        allowing modpost to exit successfully. This should be used when
+ *        we still allow to generate vmlinux and modules.
+ *
+ * error - show the given message, then let modpost continue running, but fail
+ *         in the end. This should be used when we should stop building vmlinux
+ *         or modules, but we can continue running modpost to catch as many
+ *         issues as possible.
+ *
+ * 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(LOG_WARN, fmt, ##args)
 #define error(fmt, args...)	modpost_log(LOG_ERROR, fmt, ##args)
 #define fatal(fmt, args...)	modpost_log(LOG_FATAL, fmt, ##args)
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/5] modpost: turn missing MODULE_LICENSE() into error
  2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference Masahiro Yamada
@ 2020-12-01 10:34 ` Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 4/5] modpost: change license incompatibility to error() from fatal() Masahiro Yamada
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-01 10:34 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Quentin Perret, Masahiro Yamada, Michal Marek, linux-kernel

Do not create modules with no license tag.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/mod/modpost.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 43e00867623a..d55d7e5ef111 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -2018,7 +2018,7 @@ static void read_symbols(const char *modname)
 	if (!mod->is_vmlinux) {
 		license = get_modinfo(&info, "license");
 		if (!license)
-			warn("missing MODULE_LICENSE() in %s\n", modname);
+			error("missing MODULE_LICENSE() in %s\n", modname);
 		while (license) {
 			if (license_is_gpl_compatible(license))
 				mod->gpl_compatible = 1;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/5] modpost: change license incompatibility to error() from fatal()
  2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 3/5] modpost: turn missing MODULE_LICENSE() into error Masahiro Yamada
@ 2020-12-01 10:34 ` Masahiro Yamada
  2020-12-01 10:34 ` [PATCH 5/5] modpost: turn section mismatches to error " Masahiro Yamada
  2020-12-16  6:27 ` [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
  4 siblings, 0 replies; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-01 10:34 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Quentin Perret, Masahiro Yamada, Michal Marek, linux-kernel

Change fatal() to error() to continue running to report more possible
issues.

There is no difference in the fact that modpost will fail anyway.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/mod/modpost.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index d55d7e5ef111..d907c63b948f 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -2145,11 +2145,11 @@ static void check_for_gpl_usage(enum export exp, const char *m, const char *s)
 {
 	switch (exp) {
 	case export_gpl:
-		fatal("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
+		error("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n",
 		      m, s);
 		break;
 	case export_unused_gpl:
-		fatal("GPL-incompatible module %s.ko uses GPL-only symbol marked UNUSED '%s'\n",
+		error("GPL-incompatible module %s.ko uses GPL-only symbol marked UNUSED '%s'\n",
 		      m, s);
 		break;
 	case export_gpl_future:
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/5] modpost: turn section mismatches to error from fatal()
  2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
                   ` (2 preceding siblings ...)
  2020-12-01 10:34 ` [PATCH 4/5] modpost: change license incompatibility to error() from fatal() Masahiro Yamada
@ 2020-12-01 10:34 ` Masahiro Yamada
  2020-12-16  6:27 ` [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
  4 siblings, 0 replies; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-01 10:34 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Quentin Perret, Masahiro Yamada, Michal Marek, linux-kernel

There is code that reports static EXPORT_SYMBOL a few lines below.
It is not a good idea to bail out here.

I renamed sec_mismatch_fatal to sec_mismatch_warn_only (with logical
inversion) to match to CONFIG_SECTION_MISMATCH_WARN_ONLY.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/mod/modpost.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index d907c63b948f..a750596d5cc2 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -34,7 +34,7 @@ static int external_module = 0;
 static int warn_unresolved = 0;
 /* How a symbol is exported */
 static int sec_mismatch_count = 0;
-static int sec_mismatch_fatal = 0;
+static int sec_mismatch_warn_only = true;
 /* ignore missing files */
 static int ignore_missing_files;
 /* If set to 1, only warn (instead of error) about missing ns imports */
@@ -2576,7 +2576,7 @@ int main(int argc, char **argv)
 			warn_unresolved = 1;
 			break;
 		case 'E':
-			sec_mismatch_fatal = 1;
+			sec_mismatch_warn_only = false;
 			break;
 		case 'N':
 			allow_missing_ns_imports = 1;
@@ -2640,8 +2640,8 @@ int main(int argc, char **argv)
 
 	if (dump_write)
 		write_dump(dump_write);
-	if (sec_mismatch_count && sec_mismatch_fatal)
-		fatal("Section mismatches detected.\n"
+	if (sec_mismatch_count && !sec_mismatch_warn_only)
+		error("Section mismatches detected.\n"
 		      "Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
 	for (n = 0; n < SYMBOL_HASH_SIZE; n++) {
 		struct symbol *s;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference
  2020-12-01 10:34 ` [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference Masahiro Yamada
@ 2020-12-01 16:47   ` Quentin Perret
  0 siblings, 0 replies; 7+ messages in thread
From: Quentin Perret @ 2020-12-01 16:47 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: linux-kbuild, Michal Marek, linux-kernel

On Tuesday 01 Dec 2020 at 19:34:15 (+0900), Masahiro Yamada wrote:
> We have 3 log functions. fatal() is special because it lets modpost bail
> out immediately. The difference between warn() and error() is the only
> prefix parts ("WARNING:" vs "ERROR:").
> 
> The intended usage of error() is probably to propagate the return code
> from the function to the exit code of modpost, as check_exports() etc.
> already does. This is a good manner because we should display as many
> issues as possible in a single run of modpost.
> 
> What is annoying about fatal() is that it kills modpost at the first
> error. People would need to run Kbuild again and again until they fix
> all errors.
> 
> But, unfortunately, people tend to do:
> "This case should not be allowed. Let's replace warn() with fatal()."

Indeed :-)

> One of the reasons is probably it is tedious to manually carry the error
> code back to the main() function.

And yes, that was the reason.

> This commit refactors error() so any single call for it automatically
> makes modpost return the error code.
> 
> I also added comments in modpost.h for warn(), error(), and fatal().
> 
> Again, please use fatal() only when you have a strong reason to do so.
> For example:
> 
>   - Memory shortage (i.e. malloc() etc. has failed)
>   - The ELF file is broken, and there is no point to continue parsing
>   - Something really odd has happened
> 
> For general coding errors, please use error().
> 
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

I gave it a go and the error is propagated correctly, so FWIW:

Tested-by: Quentin Perret <qperret@google.com>

Thanks,
Quentin

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/5] modpost: rename merror() to error()
  2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
                   ` (3 preceding siblings ...)
  2020-12-01 10:34 ` [PATCH 5/5] modpost: turn section mismatches to error " Masahiro Yamada
@ 2020-12-16  6:27 ` Masahiro Yamada
  4 siblings, 0 replies; 7+ messages in thread
From: Masahiro Yamada @ 2020-12-16  6:27 UTC (permalink / raw)
  To: Linux Kbuild mailing list
  Cc: Quentin Perret, Michal Marek, Linux Kernel Mailing List

On Tue, Dec 1, 2020 at 7:34 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> The log function names, warn(), merror(), fatal() are inconsistent.
>
> Commit 2a11665945d5 ("kbuild: distinguish between errors and warnings
> in modpost") intentionally chose merror() to avoid the conflict with
> the library function error(). See man page of error(3).
>
> But, we are already causing the conflict with warn() because it is also
> a library function. See man page of warn(3). err() would be a problem
> for the same reason.
>
> The common technique to work around name conflicts is to use macros.
>
>     #define error __error
>     void __error(const char *fmt, ...)
>     {
>             <our own implementation>
>     }
>
>     #define warn __warn
>     void __warn(const char *fmt, ...)
>     {
>             <our own implementation>
>     }
>
> In this way, we can implement our own warn() and error(), still we can
> include <error.h> and <err.h> with no problem.
>
> And, commit 93c95e526a4e ("modpost: rework and consolidate logging
> interface") already did that.
>
> Since the log functions are all macros, we can use error() without
> causing "conflicting types" errors.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>

This series, applied to linux-kbuild.


> ---
>
>  scripts/mod/modpost.c | 10 +++++-----
>  scripts/mod/modpost.h |  2 +-
>  2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index f882ce0d9327..337f6ca4bda3 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -403,8 +403,8 @@ static void sym_update_namespace(const char *symname, const char *namespace)
>          * actually an assertion.
>          */
>         if (!s) {
> -               merror("Could not update namespace(%s) for symbol %s\n",
> -                      namespace, symname);
> +               error("Could not update namespace(%s) for symbol %s\n",
> +                     namespace, symname);
>                 return;
>         }
>
> @@ -2226,7 +2226,7 @@ static int check_modname_len(struct module *mod)
>         else
>                 mod_name++;
>         if (strlen(mod_name) >= MODULE_NAME_LEN) {
> -               merror("module name is too long [%s.ko]\n", mod->name);
> +               error("module name is too long [%s.ko]\n", mod->name);
>                 return 1;
>         }
>
> @@ -2319,8 +2319,8 @@ static int add_versions(struct buffer *b, struct module *mod)
>                         continue;
>                 }
>                 if (strlen(s->name) >= MODULE_NAME_LEN) {
> -                       merror("too long symbol \"%s\" [%s.ko]\n",
> -                              s->name, mod->name);
> +                       error("too long symbol \"%s\" [%s.ko]\n",
> +                             s->name, mod->name);
>                         err = 1;
>                         break;
>                 }
> diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
> index 3aa052722233..f453504ad4df 100644
> --- a/scripts/mod/modpost.h
> +++ b/scripts/mod/modpost.h
> @@ -202,5 +202,5 @@ enum loglevel {
>  void modpost_log(enum loglevel loglevel, const char *fmt, ...);
>
>  #define warn(fmt, args...)     modpost_log(LOG_WARN, fmt, ##args)
> -#define merror(fmt, args...)   modpost_log(LOG_ERROR, fmt, ##args)
> +#define error(fmt, args...)    modpost_log(LOG_ERROR, fmt, ##args)
>  #define fatal(fmt, args...)    modpost_log(LOG_FATAL, fmt, ##args)
> --
> 2.27.0
>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-12-16  6:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-01 10:34 [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada
2020-12-01 10:34 ` [PATCH 2/5] modpost: refactor error handling and clarify error/fatal difference Masahiro Yamada
2020-12-01 16:47   ` Quentin Perret
2020-12-01 10:34 ` [PATCH 3/5] modpost: turn missing MODULE_LICENSE() into error Masahiro Yamada
2020-12-01 10:34 ` [PATCH 4/5] modpost: change license incompatibility to error() from fatal() Masahiro Yamada
2020-12-01 10:34 ` [PATCH 5/5] modpost: turn section mismatches to error " Masahiro Yamada
2020-12-16  6:27 ` [PATCH 1/5] modpost: rename merror() to error() Masahiro Yamada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).