diff mbox series

[1/5] modpost: rename merror() to error()

Message ID 20201201103418.675850-1-masahiroy@kernel.org (mailing list archive)
State New
Headers show
Series [1/5] modpost: rename merror() to error() | expand

Commit Message

Masahiro Yamada Dec. 1, 2020, 10:34 a.m. UTC
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(-)

Comments

Masahiro Yamada Dec. 16, 2020, 6:27 a.m. UTC | #1
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
>
diff mbox series

Patch

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)