[PATCH 06/27] modpost: use bool type where appropriate

From: Masahiro Yamada
Date: Sun Apr 24 2022 - 15:12:24 EST


Use 'bool' to clarify that the valid value is true or false.

Here is a small note for the conversion.

Strictly speaking, module::gpl_compatible was not boolean because
new_module() initialized it to -1. Maybe, -1 was used to represent the
license is 'unknown', but it is not useful.

Since commit 1d6cd3929360 ("modpost: turn missing MODULE_LICENSE() into
error"), unknown module license is not allowed anyway.

I changed the initializer "= -1" to "= true". This has no functional
change.

The current code:

if (!mod->gpl_compatible)
check_for_gpl_usage(exp->export, basename, exp->name);

... only checks whether gpl_compabilt is zero or not:

Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---

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

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index f9cbb6b6b7a5..52dd07a36379 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -23,20 +23,20 @@
#include "../../include/linux/license.h"

/* Are we using CONFIG_MODVERSIONS? */
-static int modversions;
+static bool modversions;
/* Is CONFIG_MODULE_SRCVERSION_ALL set? */
-static int all_versions;
+static bool all_versions;
/* If we are modposting external module set to 1 */
-static int external_module;
+static bool external_module;
/* Only warn about unresolved symbols */
-static int warn_unresolved;
+static bool warn_unresolved;
/* How a symbol is exported */
static int sec_mismatch_count;
-static int sec_mismatch_warn_only = true;
+static bool sec_mismatch_warn_only = true;
/* ignore missing files */
-static int ignore_missing_files;
+static bool ignore_missing_files;
/* If set to 1, only warn (instead of error) about missing ns imports */
-static int allow_missing_ns_imports;
+static bool allow_missing_ns_imports;

static bool error_occurred;

@@ -187,7 +187,7 @@ static struct module *new_module(const char *modname)
/* add to list */
strcpy(mod->name, modname);
mod->is_vmlinux = (strcmp(modname, "vmlinux") == 0);
- mod->gpl_compatible = -1;
+ mod->gpl_compatible = true;
mod->next = modules;
modules = mod;

@@ -203,10 +203,10 @@ struct symbol {
struct symbol *next;
struct module *module;
unsigned int crc;
- int crc_valid;
+ bool crc_valid;
char *namespace;
- unsigned int weak:1;
- unsigned int is_static:1; /* 1 if symbol is not global */
+ bool weak;
+ bool is_static; /* true if symbol is not global */
enum export export; /* Type of export */
char name[];
};
@@ -230,7 +230,7 @@ static inline unsigned int tdb_hash(const char *name)
* Allocate a new symbols for use in the hash of exported symbols or
* the list of unresolved symbols per module
**/
-static struct symbol *alloc_symbol(const char *name, unsigned int weak,
+static struct symbol *alloc_symbol(const char *name, bool weak,
struct symbol *next)
{
struct symbol *s = NOFAIL(malloc(sizeof(*s) + strlen(name) + 1));
@@ -239,7 +239,7 @@ static struct symbol *alloc_symbol(const char *name, unsigned int weak,
strcpy(s->name, name);
s->weak = weak;
s->next = next;
- s->is_static = 1;
+ s->is_static = true;
return s;
}

@@ -250,7 +250,7 @@ static struct symbol *new_symbol(const char *name, struct module *module,
unsigned int hash;

hash = tdb_hash(name) % SYMBOL_HASH_SIZE;
- symbolhash[hash] = alloc_symbol(name, 0, symbolhash[hash]);
+ symbolhash[hash] = alloc_symbol(name, false, symbolhash[hash]);

return symbolhash[hash];
}
@@ -419,7 +419,7 @@ static void sym_set_crc(const char *name, unsigned int crc)
return;

s->crc = crc;
- s->crc_valid = 1;
+ s->crc_valid = true;
}

static void *grab_file(const char *filename, size_t *size)
@@ -716,9 +716,9 @@ static void handle_symbol(struct module *mod, struct elf_info *info,
sym_add_exported(name, mod, export);
}
if (strcmp(symname, "init_module") == 0)
- mod->has_init = 1;
+ mod->has_init = true;
if (strcmp(symname, "cleanup_module") == 0)
- mod->has_cleanup = 1;
+ mod->has_cleanup = true;
break;
}
}
@@ -2008,9 +2008,9 @@ static void read_symbols(const char *modname)
error("missing MODULE_LICENSE() in %s\n", modname);
while (license) {
if (license_is_gpl_compatible(license))
- mod->gpl_compatible = 1;
+ mod->gpl_compatible = true;
else {
- mod->gpl_compatible = 0;
+ mod->gpl_compatible = false;
break;
}
license = get_next_modinfo(&info, "license", license);
@@ -2053,7 +2053,7 @@ static void read_symbols(const char *modname)
sym->st_name));

if (s)
- s->is_static = 0;
+ s->is_static = false;
}
}

@@ -2073,7 +2073,7 @@ static void read_symbols(const char *modname)
* the automatic versioning doesn't pick it up, but it's really
* important anyhow */
if (modversions)
- mod->unres = alloc_symbol("module_layout", 0, mod->unres);
+ mod->unres = alloc_symbol("module_layout", false, mod->unres);
}

static void read_symbols_from_files(const char *filename)
@@ -2305,7 +2305,7 @@ static void add_depends(struct buffer *b, struct module *mod)
if (s->module->seen)
continue;

- s->module->seen = 1;
+ s->module->seen = true;
p = strrchr(s->module->name, '/');
if (p)
p++;
@@ -2422,10 +2422,10 @@ static void read_dump(const char *fname)
mod = find_module(modname);
if (!mod) {
mod = new_module(modname);
- mod->from_dump = 1;
+ mod->from_dump = true;
}
s = sym_add_exported(symname, mod, export_no(export));
- s->is_static = 0;
+ s->is_static = false;
sym_set_crc(symname, crc);
sym_update_namespace(symname, namespace);
}
@@ -2503,7 +2503,7 @@ int main(int argc, char **argv)
while ((opt = getopt(argc, argv, "ei:mnT:o:awENd:")) != -1) {
switch (opt) {
case 'e':
- external_module = 1;
+ external_module = true;
break;
case 'i':
*dump_read_iter =
@@ -2512,28 +2512,28 @@ int main(int argc, char **argv)
dump_read_iter = &(*dump_read_iter)->next;
break;
case 'm':
- modversions = 1;
+ modversions = true;
break;
case 'n':
- ignore_missing_files = 1;
+ ignore_missing_files = true;
break;
case 'o':
dump_write = optarg;
break;
case 'a':
- all_versions = 1;
+ all_versions = true;
break;
case 'T':
files_source = optarg;
break;
case 'w':
- warn_unresolved = 1;
+ warn_unresolved = true;
break;
case 'E':
sec_mismatch_warn_only = false;
break;
case 'N':
- allow_missing_ns_imports = 1;
+ allow_missing_ns_imports = true;
break;
case 'd':
missing_namespace_deps = optarg;
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index a85dcec3669a..4085bf5b33aa 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -1,4 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0 */
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -116,11 +117,10 @@ struct module {
struct module *next;
int gpl_compatible;
struct symbol *unres;
- int from_dump; /* 1 if module was loaded from *.symvers */
- int is_vmlinux;
- int seen;
- int has_init;
- int has_cleanup;
+ bool from_dump; /* true if module was loaded from *.symvers */
+ bool is_vmlinux;
+ bool seen;
+ bool has_init, has_cleanup;
struct buffer dev_table_buf;
char srcversion[25];
// Missing namespace dependencies
--
2.32.0