lkml.org 
[lkml]   [2020]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 02/29] modpost: do not call get_modinfo() for vmlinux
    Date
    The three calls of get_modinfo() ("license", "import_ns", "version")
    always return NULL for vmlinux because the built-in module info is
    prefixed with __MODULE_INFO_PREFIX.

    It is harmless to call get_modinfo(), but there is no point to search
    for what apparently does not exist.

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

    Changes in v2: None

    scripts/mod/modpost.c | 45 +++++++++++++++++++++++--------------------
    1 file changed, 24 insertions(+), 21 deletions(-)

    diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
    index 77e5425759e2..af098d7efc22 100644
    --- a/scripts/mod/modpost.c
    +++ b/scripts/mod/modpost.c
    @@ -2014,25 +2014,26 @@ static void read_symbols(const char *modname)
    mod->skip = 1;
    }

    - license = get_modinfo(&info, "license");
    - if (!license && !is_vmlinux(modname))
    - warn("missing MODULE_LICENSE() in %s\n"
    - "see include/linux/module.h for "
    - "more information\n", modname);
    - while (license) {
    - if (license_is_gpl_compatible(license))
    - mod->gpl_compatible = 1;
    - else {
    - mod->gpl_compatible = 0;
    - break;
    + if (!is_vmlinux(modname)) {
    + license = get_modinfo(&info, "license");
    + if (!license)
    + warn("missing MODULE_LICENSE() in %s\n", modname);
    + while (license) {
    + if (license_is_gpl_compatible(license))
    + mod->gpl_compatible = 1;
    + else {
    + mod->gpl_compatible = 0;
    + break;
    + }
    + license = get_next_modinfo(&info, "license", license);
    }
    - license = get_next_modinfo(&info, "license", license);
    - }

    - namespace = get_modinfo(&info, "import_ns");
    - while (namespace) {
    - add_namespace(&mod->imported_namespaces, namespace);
    - namespace = get_next_modinfo(&info, "import_ns", namespace);
    + namespace = get_modinfo(&info, "import_ns");
    + while (namespace) {
    + add_namespace(&mod->imported_namespaces, namespace);
    + namespace = get_next_modinfo(&info, "import_ns",
    + namespace);
    + }
    }

    for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
    @@ -2073,10 +2074,12 @@ static void read_symbols(const char *modname)
    if (!is_vmlinux(modname) || vmlinux_section_warnings)
    check_sec_ref(mod, modname, &info);

    - version = get_modinfo(&info, "version");
    - if (version || (all_versions && !is_vmlinux(modname)))
    - get_src_version(modname, mod->srcversion,
    - sizeof(mod->srcversion)-1);
    + if (!is_vmlinux(modname)) {
    + version = get_modinfo(&info, "version");
    + if (version || all_versions)
    + get_src_version(modname, mod->srcversion,
    + sizeof(mod->srcversion) - 1);
    + }

    parse_elf_finish(&info);

    --
    2.25.1
    \
     
     \ /
      Last update: 2020-05-24 17:44    [W:4.355 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site