From patchwork Sun May 17 09:48:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554043 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB687618 for ; Sun, 17 May 2020 09:50:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A368120727 for ; Sun, 17 May 2020 09:50:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709041; bh=3quDtaeJHy0mK/+Mttu+EjJV+9LH+j4l8CefVTqNrHI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=Av5BTAQ3jy3dGFd5V1K8GcAYnDuogxDv8DPeyHHBXg9hy8KzG3ROats0i5qkA/4Zz gNmpYxQqtnwSjgdHRNOvp9ZLG4nIiEamSRWRJxfi7McLJuTVtAEC7zMJMYjvgPRyZq yrLbxAeGiaB8pNMZUBb2xYHuSvD+UfBr8qQ/IVrs= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728177AbgEQJuk (ORCPT ); Sun, 17 May 2020 05:50:40 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38313 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727785AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4Kw018560; Sun, 17 May 2020 18:49:05 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4Kw018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708946; bh=ukd2Ha5ycOJDtM88DPTp8S4fSLpCUGmKI4WkTZgG/dg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HYz3Qv1DYXST6RSYafZFxihXRJfXVrchyZUsUEAWgs5nc22QSOkmi7J92uGDgpO4A ElCr/yz9QtcOQq0JRj6rr+Q47nxWorUxWf8Iw5RqwYSuZ8PN6qq7vI2ZpEP1Gj91S/ hrGOV0IMP+eudk+TFRf7P3OjH/XQTKmfojKY7fO+ixmXtUts1dAQKvGHq8kjsN53q5 txYYjT7e+Eyfc0Pgdn/9ahV0sFzwIjhQ3yuLG4kFdbS9lZOCu4VmaQhWvhMOKt/gQ1 adpq5RAtXQYgngbWfISOK7E5BV6MLherplub3N+N8IbixKmmkvETeEW+Y7NTSRNDPW Rn55lMo7QyEHQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 01/29] modpost: drop RCS/CVS $Revision handling in MODULE_VERSION() Date: Sun, 17 May 2020 18:48:31 +0900 Message-Id: <20200517094859.2376211-2-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org As far as I understood, this code gets rid of '$Revision$' or '$Revision:' of CVS, RCS or whatever in MODULE_VERSION() tags. Remove the primeval code. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 3 -- scripts/mod/modpost.h | 4 --- scripts/mod/sumversion.c | 66 ---------------------------------------- 3 files changed, 73 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 4d4b979d76be..77e5425759e2 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2074,9 +2074,6 @@ static void read_symbols(const char *modname) check_sec_ref(mod, modname, &info); version = get_modinfo(&info, "version"); - if (version) - maybe_frob_rcs_version(modname, version, info.modinfo, - version - (char *)info.hdr); if (version || (all_versions && !is_vmlinux(modname))) get_src_version(modname, mod->srcversion, sizeof(mod->srcversion)-1); diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index 39f6c29fb568..bbaf5cc37bfb 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -187,10 +187,6 @@ void handle_moddevtable(struct module *mod, struct elf_info *info, void add_moddevtable(struct buffer *buf, struct module *mod); /* sumversion.c */ -void maybe_frob_rcs_version(const char *modfilename, - char *version, - void *modinfo, - unsigned long modinfo_offset); void get_src_version(const char *modname, char sum[], unsigned sumlen); /* from modpost.c */ diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c index 63062024ce0e..f27f22420cbc 100644 --- a/scripts/mod/sumversion.c +++ b/scripts/mod/sumversion.c @@ -429,69 +429,3 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen) release: release_file(file, len); } - -static void write_version(const char *filename, const char *sum, - unsigned long offset) -{ - int fd; - - fd = open(filename, O_RDWR); - if (fd < 0) { - warn("changing sum in %s failed: %s\n", - filename, strerror(errno)); - return; - } - - if (lseek(fd, offset, SEEK_SET) == (off_t)-1) { - warn("changing sum in %s:%lu failed: %s\n", - filename, offset, strerror(errno)); - goto out; - } - - if (write(fd, sum, strlen(sum)+1) != strlen(sum)+1) { - warn("writing sum in %s failed: %s\n", - filename, strerror(errno)); - goto out; - } -out: - close(fd); -} - -static int strip_rcs_crap(char *version) -{ - unsigned int len, full_len; - - if (strncmp(version, "$Revision", strlen("$Revision")) != 0) - return 0; - - /* Space for version string follows. */ - full_len = strlen(version) + strlen(version + strlen(version) + 1) + 2; - - /* Move string to start with version number: prefix will be - * $Revision$ or $Revision: */ - len = strlen("$Revision"); - if (version[len] == ':' || version[len] == '$') - len++; - while (isspace(version[len])) - len++; - memmove(version, version+len, full_len-len); - full_len -= len; - - /* Preserve up to next whitespace. */ - len = 0; - while (version[len] && !isspace(version[len])) - len++; - memmove(version + len, version + strlen(version), - full_len - strlen(version)); - return 1; -} - -/* Clean up RCS-style version numbers. */ -void maybe_frob_rcs_version(const char *modfilename, - char *version, - void *modinfo, - unsigned long version_offset) -{ - if (strip_rcs_crap(version)) - write_version(modfilename, version, version_offset); -} From patchwork Sun May 17 09:48:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554047 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3F884138A for ; Sun, 17 May 2020 09:50:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 283882065F for ; Sun, 17 May 2020 09:50:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709051; bh=l6CBkLFF6/kMKoFrTlrzrNMFt5yhaNjkUGM5isr/TU4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=zaoRumUMK7Ve68aoseCynGninzqQ62887Vgjd6mAk5ZxL4H/dBrRkXvodTv6E1fos xltE8Nmn9eZ9sSRWjdVuXIvzljb2t6jR5LJ4Ep9iteqOXwPdHMOOvDYFcoXuN+h9LZ CAL1oXhhqyQQuIJ7g1F6oc8/t+Fbnq5Up3QUMhvI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728190AbgEQJuo (ORCPT ); Sun, 17 May 2020 05:50:44 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38317 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727788AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4Kx018560; Sun, 17 May 2020 18:49:06 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4Kx018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708946; bh=XgxxbTZCB+kMszGei0tHNQqHRoGHaow3OTqbzc12Rcs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KTCUDpUrXnxHd4p0HCZUZFvsP5EybE7hP1+t1botpzwdDiJcVHNKMN8JuxhDO/sdR AW22JZ5CVIrPuIJs5AV0bQpS51ovAmqhtOJnTLvZ1l/1HxYkCZM/LHq2NQVhdMLJfS yRu9nc87J90nKe4totW238w/cAwBxX7shgkeW0MakTmDh86Cpk2749ViN8SImMOgMS yhDZZjzd+nlLh8CVlU9qB8ZCqZHeb4A1lTCYNIwSbumOEaJYtrplN8zNolOArSvnlP O2VmJhYfPtM5GPhrvMV22WbSdNFZDWx8UWpZoA5FEDcMCgrPr0hjZt4nX181TlZCw9 Pv/IAIL637y3A== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 02/29] modpost: do not call get_modinfo() for vmlinux Date: Sun, 17 May 2020 18:48:32 +0900 Message-Id: <20200517094859.2376211-3-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org 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 --- 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); From patchwork Sun May 17 09:48:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554019 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0B481913 for ; Sun, 17 May 2020 09:49:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E72C82065F for ; Sun, 17 May 2020 09:49:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708998; bh=94kzuLGLqodSVHeEukr593NVNHKOJFynf5l/GdMp870=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=NLgPq9woHduQmvKkKOXqVcb5WPfIVCshX9Morl3N9kQfJuH285+kZoRHRAJxiqJHg Ywp0U+hA2lBaZO2d9J1ALZnYAPoiPSsP0o5K/eQFTCbd7E5WOrC9vvKqaz1aryUNps WhK8fnDdtfK5Qu+ENlSjSPcT7qcoKfqqwpi+lYZQ= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727957AbgEQJtv (ORCPT ); Sun, 17 May 2020 05:49:51 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38327 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727814AbgEQJth (ORCPT ); Sun, 17 May 2020 05:49:37 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L0018560; Sun, 17 May 2020 18:49:07 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L0018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708947; bh=ibb66H/JCMPnh041HwrGfYVbBcz1hL248mIHX+8vOjY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CZfhOX1z+ALUcwN6Vl5i+inuYyak49dlDdYH+DZgAtzWkNZre+zSNDUn+DaPL5tdv OYVfMyQ4/Oy/oixAATxIKDsyqJ70ErdygaSJ3rRJlj2xo3e6VicK61hH0p6cgre90E o4hy/+tcDbIBsWy/CgWLLyYkjlpZOoXh9fQsy9Vy/2AGdhIE3+p+9t7XW+MRjiMHQ1 UkYk7tvOR3SiaxM6l1DFNmgNzW4XoH3HX+y7A5rBjcwvZSUZXmsjkc8QENmXy+ZItx 214HAPqcj8so/ssL6zlj+pubEazgd2Qd9y1BOzZVyVtIBMqTIXk//2bj1MvvktegVn vyWONmslV0yfg== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 03/29] modpost: add read_text_file() and get_line() helpers Date: Sun, 17 May 2020 18:48:33 +0900 Message-Id: <20200517094859.2376211-4-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org modpost uses grab_file() to open a file, but it is not suitable for a text file because the mmaped file is not terminated by null byte. Actually, I see some issues for the use of grab_file(). The new helper, read_text_file() loads the whole file content into a malloc'ed buffer, and appends a null byte. Then, get_line() reads each line. To handle text files, I intend to replace as follows: grab_file() -> read_text_file() get_new_line() -> get_line() Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 36 ++++++++++++++++++++++++++++++++++++ scripts/mod/modpost.h | 2 ++ 2 files changed, 38 insertions(+) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index af098d7efc22..2c6319f0ce19 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -112,6 +112,42 @@ void *do_nofail(void *ptr, const char *expr) return ptr; } +char *read_text_file(const char *filename) +{ + struct stat st; + int fd; + char *buf; + + fd = open(filename, O_RDONLY); + if (fd < 0) + return NULL; + + if (fstat(fd, &st) < 0) + return NULL; + + buf = NOFAIL(malloc(st.st_size + 1)); + + if (read(fd, buf, st.st_size) != st.st_size) { + free(buf); + buf = NULL; + goto close; + } + buf[st.st_size] = '\0'; +close: + close(fd); + + return buf; +} + +char *get_line(char **stringp) +{ + /* do not return the unwanted extra line at EOF */ + if (*stringp && **stringp == '\0') + return NULL; + + return strsep(stringp, "\n"); +} + /* A list of all modules we processed */ static struct module *modules; diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index bbaf5cc37bfb..dfadaa0c01ec 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -190,6 +190,8 @@ void add_moddevtable(struct buffer *buf, struct module *mod); void get_src_version(const char *modname, char sum[], unsigned sumlen); /* from modpost.c */ +char *read_text_file(const char *filename); +char *get_line(char **stringp); void *grab_file(const char *filename, unsigned long *size); char* get_next_line(unsigned long *pos, void *file, unsigned long size); void release_file(void *file, unsigned long size); From patchwork Sun May 17 09:48:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554017 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0D660138A for ; Sun, 17 May 2020 09:49:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E918620671 for ; Sun, 17 May 2020 09:49:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708991; bh=biGr+7OSEos7+YAAcuWWx3f+URSJesneHTeFMan8fRc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=oCCyCE7qus5JrX7WqOI+3ttxH4RkeigPauCyl+Jb6RDDQ+vkpdMQbbvyfKTpOsGeK MTyjZJKKfs3ore3EkW7KYU4Gpq+OVyRnf4lDBm9P51xmdwMb4FiCAiLDPnHvKS8JjC XXrn/jEu7mCzbnni+N64dytHqu1WSJyh6zPuIXm0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727823AbgEQJtv (ORCPT ); Sun, 17 May 2020 05:49:51 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38335 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727819AbgEQJth (ORCPT ); Sun, 17 May 2020 05:49:37 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L1018560; Sun, 17 May 2020 18:49:07 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L1018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708947; bh=+Wli0ANQRSz5CyU9XJeWEiPgVaZDq/eZreAnc0MeVrw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PD62mwGz3xj4mhmiGmkygw8oIMlUnyAVsQfrRijOnv61NK/Wix4ENPbS0mGdUU7QG OWotyN8Uh1g6L3ibkVinUi/I01EL0gKMV3Qf7bWgK0LTz04oUpIsGrKNThFLINMrmO QeAJegfB1WQF9JGi0SSvNJoRGnVUZ0TrAttYCN8npqRXUm5WF/OdG4tshjVmGw9tme MLYw5Nimyh+KPNccEkFZgMEogDA/u467/XBlqgKLAw3cK/iY/LWPs1XDCe6G7PqBlP ec6HRc3sTNWEWaB2LYlWmck7WdAZ7foQa8nooBx9qQin7yC67z5H/l8PgRim04ozTA 1dpNtsPY8cLxQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 04/29] modpost: fix potential mmap'ed file overrun in get_src_version() Date: Sun, 17 May 2020 18:48:34 +0900 Message-Id: <20200517094859.2376211-5-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org I do not know how reliably this function works, but it seems dangerous to me, at least. The function call strchr(sources, '\n'); ... continues searching until it finds '\n' or it reaches the '\0' terminator. In other words, 'sources' should be a null-terminated string. However, grab_file() just mmaps a file, so 'sources' is not terminated with null byte. If the file does not contain '\n' at all, strchr() will go beyond the mmap'ed memory. Instead, use read_text_file(), which loads the file content into a malloc'ed buffer, appending null-byte. Here we are interested only in the first line of *.mod files. Use get_line() helper to get the first line. Signed-off-by: Masahiro Yamada --- scripts/mod/sumversion.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c index f27f22420cbc..f9aa532d93cf 100644 --- a/scripts/mod/sumversion.c +++ b/scripts/mod/sumversion.c @@ -392,40 +392,37 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md) /* Calc and record src checksum. */ void get_src_version(const char *modname, char sum[], unsigned sumlen) { - void *file; - unsigned long len; + char *buf, *pos, *firstline; struct md4_ctx md; - char *sources, *end, *fname; + char *fname; char filelist[PATH_MAX + 1]; /* objects for a module are listed in the first line of *.mod file. */ snprintf(filelist, sizeof(filelist), "%.*smod", (int)strlen(modname) - 1, modname); - file = grab_file(filelist, &len); - if (!file) + buf = read_text_file(filelist); + if (!buf) /* not a module or .mod file missing - ignore */ return; - sources = file; - - end = strchr(sources, '\n'); - if (!end) { + pos = buf; + firstline = get_line(&pos); + if (!firstline) { warn("bad ending versions file for %s\n", modname); - goto release; + goto free; } - *end = '\0'; md4_init(&md); - while ((fname = strsep(&sources, " ")) != NULL) { + while ((fname = strsep(&firstline, " "))) { if (!*fname) continue; if (!(is_static_library(fname)) && !parse_source_files(fname, &md)) - goto release; + goto free; } md4_final_ascii(&md, sum, sumlen); -release: - release_file(file, len); +free: + free(buf); } From patchwork Sun May 17 09:48:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554061 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B6202138A for ; Sun, 17 May 2020 09:51:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C6202065F for ; Sun, 17 May 2020 09:51:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709070; bh=tk/fwOURHRn164tNk1hs4Cayy/xACe3yQIyzTiOvCC8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=KUTvG5Pev+ucrYlskaY/u10xBO2lUd1jG7pxNAXj+7o3QFwWtH+ZC2Ma6knmsbazZ DtsDnxqpjOho7fDUrdVwaCYkbiwDQKAkKA54R9QSSlUqTgn2JspZBnnOCXnvRhgFM8 9mJ1n04KEkpuzI/QsdUhf4HjF/Y7Zk80CkwHyv1w= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728278AbgEQJvG (ORCPT ); Sun, 17 May 2020 05:51:06 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38303 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727768AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L2018560; Sun, 17 May 2020 18:49:08 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L2018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708948; bh=8KRAehNYEbD8P1SFsb4sUZSCAiUKonw/xvsoBMy6pYY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zdzkC2hYifs4g9KJvQEX5U8dgYdzH4gpmuFFlmKr1vIF2dGnfoqy+bocgP5t1oUmV O92dYh1+H8lfuO2TmHLJQBu8qpMpVg6T3NjEiK5OaYyyagoKwi+LeIntk/oV5KtLI/ R56RixOEehto6Cb2cOX1ofDH6dlzF3U8nzXZEgl4emHxdDS0wN7YISkbklyH05lG66 UHfwvzxgbu5ebRZtyIsK1KoHuyRrD4P+SER39sEEj0dloVkAtoHn+fFsm6cude5ZBC +Rc+oBVX2U+wAwj12zgMGKwU6nvLIy8elpjOZVKTl/2M7CRiP+bB4LmtZ2a6k9Wt9u LPbs0dfUZ23Ig== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 05/29] modpost: re-add warning about missing *.mod file Date: Sun, 17 May 2020 18:48:35 +0900 Message-Id: <20200517094859.2376211-6-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org This reverts 4be40e22233c ("kbuild: do not emit src version warning for non-modules"). I do not fully understand what that commit addressed, but commit 91341d4b2c19 ("kbuild: introduce new option to enhance section mismatch analysis") introduced partial section checks by using modpost. built-in.o was parsed by modpost. Even modules had a problem because *.mod files were created after the modpost check. Commit b7dca6dd1e59 ("kbuild: create *.mod with full directory path and remove MODVERDIR") stopped doing that. Now that modpost is only invoked after the directory descend, *.mod files should always exist at the modpost stage. If not, something went wrong, which should be warned. Signed-off-by: Masahiro Yamada --- scripts/mod/sumversion.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c index f9aa532d93cf..f9df0b1863f1 100644 --- a/scripts/mod/sumversion.c +++ b/scripts/mod/sumversion.c @@ -402,9 +402,11 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen) (int)strlen(modname) - 1, modname); buf = read_text_file(filelist); - if (!buf) - /* not a module or .mod file missing - ignore */ + if (!buf) { + warn("failed to open %s. cannot calculate checksum\n", + filelist); return; + } pos = buf; firstline = get_line(&pos); From patchwork Sun May 17 09:48:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554009 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 01097913 for ; Sun, 17 May 2020 09:49:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DA63F2065F for ; Sun, 17 May 2020 09:49:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708975; bh=ct51dfJq4ukxG3Xc/6GBcUHHnDns7O8tKoWMcn8twxo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=My0YMsCcNR5U9QXFejJVyiEkaPrBxhrPqA0u2QVGp7OMeerk1d3++c1FYWS27iGFP o6qiJ1zjG2ps38e2cw3VrTMO8xb99gWbw4Ri9Tk00MZG5C5Fp42eHKzanNI8Oqk9H9 TbLNjvQN8DQuoOEYull/um94wKbG3bjAykR17KLc= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727829AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38297 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727123AbgEQJte (ORCPT ); Sun, 17 May 2020 05:49:34 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L3018560; Sun, 17 May 2020 18:49:08 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L3018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708949; bh=6K+D+dSB42US8DS1uSVG3jkfdReISGQFxEdCh46Tq6k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vtai4x/0IIFFPfNt2tFcvRyuKZcTw+ZU791TbffSIbXEe5tILl7D+NiqimWFgKURA dc4wsPAL7hu9J/yojn10Int8ahOvOXoXbudXmWoXQHH72XMSZ6mgLsBHWdekhcQbdl 6PRsBaSF0gQ5eiLhx1qeTte3QjMw5leAlxds3Gbt29p+QTkWeijaRRGa3EqcCEAkzF Pvi/0g5/KtV8YXaY2V3S0fbAMsBAu3NkJEHiXx1c1sNawvB+v+fQjKXkADjKJKwXkA 1VL8DUsSWHNPMzREs4nQiEA56Z1Eb91l53dlrosOExeTj085JZ9kyaJ983nJgxCxbg aWAYVg8mmS2Jw== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 06/29] modpost: avoid false-positive file open error Date: Sun, 17 May 2020 18:48:36 +0900 Message-Id: <20200517094859.2376211-7-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org One problem of grab_file() is that it cannot distinguish the following two cases: - I cannot read the file (the file does not exist, or read permission is not set) - It can read the file, but the file size is zero This is because grab_file() calls mmap(), which requires the mapped length is greater than 0. Hence, grab_file() fails for both cases. If an empty header file were included from a module that requires checksum calculation, the following warning would be printed: WARNING: modpost: could not open ...: Invalid argument An empty file is a valid source file, so it should not fail. Use read_text_file() instead. It can read a zero-length file. Then, parse_file() will succeed with doing nothing. Signed-off-by: Masahiro Yamada --- scripts/mod/sumversion.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c index f9df0b1863f1..a1c7b0f4cd5a 100644 --- a/scripts/mod/sumversion.c +++ b/scripts/mod/sumversion.c @@ -258,10 +258,12 @@ static int parse_file(const char *fname, struct md4_ctx *md) char *file; unsigned long i, len; - file = grab_file(fname, &len); + file = read_text_file(fname); if (!file) return 0; + len = strlen(file); + for (i = 0; i < len; i++) { /* Collapse and ignore \ and CR. */ if (file[i] == '\\' && (i+1 < len) && file[i+1] == '\n') { @@ -287,7 +289,7 @@ static int parse_file(const char *fname, struct md4_ctx *md) add_char(file[i], md); } - release_file(file, len); + free(file); return 1; } /* Check whether the file is a static library or not */ From patchwork Sun May 17 09:48:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554037 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9CB74138A for ; Sun, 17 May 2020 09:50:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8300D20727 for ; Sun, 17 May 2020 09:50:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709032; bh=wb/Pzcvi6EcOf44wjljoME/tkXQWU10ouKcoPd2P5wQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=pOlCvFk+gA/lETKE3JS9A3smT7LLQyg8QxBxEsTw9qhBODz9xyVKM2Dkmgf9R1fhJ hLl+oBIGbeCW6t3co75CgP42i93UauodDuVwIoQUoOp0pMkE7YPg7EPZ1w+uMoO70k OBUTpoySfmAkQcP5jruY1s2dwhVgj+WzXdmiE8i8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728088AbgEQJuV (ORCPT ); Sun, 17 May 2020 05:50:21 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38331 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727812AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L4018560; Sun, 17 May 2020 18:49:09 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L4018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708949; bh=HDyB9iGxCGVtkBKzkgco6muLOnSe+630RxDR+kh602E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pXUKav6F0+9yn2cdiqxWYCjuJwpjYe9/kHJjkF/pG0Yzqkw+gnvh8GdvUKCN/yTaS SevUqXEc0XnPasS3DlcNu6K/bp3aPeh1WaVSn1R0x3G8GHN7gRiZG6gSCokv7WIbm0 +7P7GTN8QtySZUJSkIzDmoSFof0ZjPVLGGFXd3wXkJTg/Ss7NYhewhpCW/ZZPNYZjg 0Wl84uwE+SFClfNtuimSsUfxhR9jaNOAM+ShwEKvL83tk/iA17czDvD3HChvTZT4yC WWWTRLfE7I3pGPR/ZATGHiQW5S3MTyghnXKHJejRhbMIV9rjzAT6uiYa7br8NiMerf RlfTWo2Xi6Lsw== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 07/29] modpost: use read_text_file() and get_line() for reading text files Date: Sun, 17 May 2020 18:48:37 +0900 Message-Id: <20200517094859.2376211-8-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org grab_file() mmaps a file, but it is not so efficient here because get_next_line() copies every line to the temporary buffer anyway. read_text_file() and get_line() are simpler. get_line() exploits the library function strchr(). Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 15 ++++++++------- scripts/mod/sumversion.c | 11 ++++++----- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2c6319f0ce19..8021f7e93448 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2466,15 +2466,16 @@ static void write_if_changed(struct buffer *b, const char *fname) **/ static void read_dump(const char *fname, unsigned int kernel) { - unsigned long size, pos = 0; - void *file = grab_file(fname, &size); - char *line; + char *buf, *pos, *line; - if (!file) + buf = read_text_file(fname); + if (!buf) /* No symbol versions, silently ignore */ return; - while ((line = get_next_line(&pos, file, size))) { + pos = buf; + + while ((line = get_line(&pos))) { char *symname, *namespace, *modname, *d, *export; unsigned int crc; struct module *mod; @@ -2509,10 +2510,10 @@ static void read_dump(const char *fname, unsigned int kernel) sym_set_crc(symname, crc); sym_update_namespace(symname, namespace); } - release_file(file, size); + free(buf); return; fail: - release_file(file, size); + free(buf); fatal("parse error in symbol dump file\n"); } diff --git a/scripts/mod/sumversion.c b/scripts/mod/sumversion.c index a1c7b0f4cd5a..89c8baefde9d 100644 --- a/scripts/mod/sumversion.c +++ b/scripts/mod/sumversion.c @@ -306,9 +306,8 @@ static int is_static_library(const char *objfile) * to figure out source files. */ static int parse_source_files(const char *objfile, struct md4_ctx *md) { - char *cmd, *file, *line, *dir; + char *cmd, *file, *line, *dir, *pos; const char *base; - unsigned long flen, pos = 0; int dirlen, ret = 0, check_files = 0; cmd = NOFAIL(malloc(strlen(objfile) + sizeof("..cmd"))); @@ -326,14 +325,16 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md) strncpy(dir, objfile, dirlen); dir[dirlen] = '\0'; - file = grab_file(cmd, &flen); + file = read_text_file(cmd); if (!file) { warn("could not find %s for %s\n", cmd, objfile); goto out; } + pos = file; + /* Sum all files in the same dir or subdirs. */ - while ((line = get_next_line(&pos, file, flen)) != NULL) { + while ((line = get_line(&pos))) { char* p = line; if (strncmp(line, "source_", sizeof("source_")-1) == 0) { @@ -384,7 +385,7 @@ static int parse_source_files(const char *objfile, struct md4_ctx *md) /* Everyone parsed OK */ ret = 1; out_file: - release_file(file, flen); + free(file); out: free(dir); free(cmd); From patchwork Sun May 17 09:48:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554011 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8F596138A for ; Sun, 17 May 2020 09:49:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 778672065F for ; Sun, 17 May 2020 09:49:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708986; bh=KUnQZR/HufKJMKrCYtNxVFFl1qNR7/CGNsbZFTX4n4I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=M/iuiW0GoyKKm1hyZBzl2oND1eMgqhMkenTUwEH1WFMZnvsHkgQtXDW791e8ZlTBa 58zjjiUrCMzPWJl79q/wP35WqnOWp8CS5uY/xPI4jKSlSgSHHi6tRQK5/Zr/B2+pJX HAnBVVFU0iZmh+++mdQbquNyK2w1qyMLQfWt1sI8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727904AbgEQJti (ORCPT ); Sun, 17 May 2020 05:49:38 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38337 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727822AbgEQJth (ORCPT ); Sun, 17 May 2020 05:49:37 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L5018560; Sun, 17 May 2020 18:49:09 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L5018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708950; bh=xYq0Wz8Mg+n/AM+6QwGzaReGlpbaasY+wlFVALGCRTw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HWFcJwnVWGewoSOghCFrDvofTGnWtEszCyhVIzceJ2vfkvqhZI2DBkrIDebS+0PaU l1pV8lMQ4eouj8A2rj6u1XDez30h6bpuCckvXyHXaTmJb7OwICwwp3jHN1ipCEbJ5d P+TdBanBYNTK93lrAJkzwl6kBignlpIjVkugY9BtVAXYRT1+x0w601TTk2QVOere3h L44pcehfoQjP+zXMFTFBhgoiO0egEydBsJkeJI+0ZP5TiKZoPh8Z5+R/+EtAndolL9 a2PpVeprNjmKPoH+bRL+t/gZSRotlW8GL7hry8juJcIL6qxEpFM5hw0gvl3+sSqWjQ 0BHj3ldOqsMNw== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 08/29] modpost: remove get_next_text() and make {grab,release_}file static Date: Sun, 17 May 2020 18:48:38 +0900 Message-Id: <20200517094859.2376211-9-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org get_next_line() is no longer used. Remove. grab_file() and release_file() are only used in modpost.c. Make them static. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 38 ++------------------------------------ scripts/mod/modpost.h | 3 --- 2 files changed, 2 insertions(+), 39 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 8021f7e93448..cd3cb781a2e7 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -452,7 +452,7 @@ static void sym_set_crc(const char *name, unsigned int crc) s->crc_valid = 1; } -void *grab_file(const char *filename, unsigned long *size) +static void *grab_file(const char *filename, unsigned long *size) { struct stat st; void *map = MAP_FAILED; @@ -474,41 +474,7 @@ void *grab_file(const char *filename, unsigned long *size) return map; } -/** - * Return a copy of the next line in a mmap'ed file. - * spaces in the beginning of the line is trimmed away. - * Return a pointer to a static buffer. - **/ -char *get_next_line(unsigned long *pos, void *file, unsigned long size) -{ - static char line[4096]; - int skip = 1; - size_t len = 0; - signed char *p = (signed char *)file + *pos; - char *s = line; - - for (; *pos < size ; (*pos)++) { - if (skip && isspace(*p)) { - p++; - continue; - } - skip = 0; - if (*p != '\n' && (*pos < size)) { - len++; - *s++ = *p++; - if (len > 4095) - break; /* Too long, stop */ - } else { - /* End of string */ - *s = '\0'; - return line; - } - } - /* End of buffer */ - return NULL; -} - -void release_file(void *file, unsigned long size) +static void release_file(void *file, unsigned long size) { munmap(file, size); } diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index dfadaa0c01ec..232a0e11fcaa 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -192,9 +192,6 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen); /* from modpost.c */ char *read_text_file(const char *filename); char *get_line(char **stringp); -void *grab_file(const char *filename, unsigned long *size); -char* get_next_line(unsigned long *pos, void *file, unsigned long size); -void release_file(void *file, unsigned long size); enum loglevel { LOG_WARN, From patchwork Sun May 17 09:48:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554059 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB5DF618 for ; Sun, 17 May 2020 09:51:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9925C2065F for ; Sun, 17 May 2020 09:51:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709065; bh=Qvq2DACA0PxYaLnNNCWS7qJx9lLvvl5f0pSMc/4MtIg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=bNTwo0BQqwq/I4YlhKOPEDkOUOMfMBOt0sPHq9D+sREuFfqHof12GRDL0q4bNBzVh yrkfYSeBW6Ly6cwttb/q7iaiZuIHlDPH3Pf390dIPjGrhR+BQtMF5CMK7qrbrihoda tuvNFI2WlqMOB7RAddERxjAyaye1xtzp7z6Nh8uM= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727837AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38302 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727117AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L6018560; Sun, 17 May 2020 18:49:10 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L6018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708950; bh=4G/LU/whNlt1qcU7HLw7OO1/pSZrdFyVabhepRCEO/Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GI5LEdjPfr2KlWPvSIftDRPwYqgr2RSSRvCJ2TJdqpZHAEzXclb33RXkpuEWF/Arc eeNnAOLqPXmr906gADNCHfhbLN5yhLRRRmLLRkc4/sE2m73zzNn5YdVGzwnNUbnum7 jFB6t0VpdEz/muIbS1xhJ70KqFMASP92Gm/6BnWfOc70dZYEN+lPsz5rpeGD034KeV SpqsSFe5eoeUHx2+DQ3mFAS8OC6qIgB1ynCM3d64vPFR4FK8NjJ/p+zOfIbJvyOlyj n3vdtEctZlRNy+w1u+w5epcSt9QhfKSSzgCM/eB1g58zYWqqcNp8cGkyqsZSHoDERr aWhWatRfEbNHA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 09/29] kbuild: disallow multi-word in M= or KBUILD_EXTMOD Date: Sun, 17 May 2020 18:48:39 +0900 Message-Id: <20200517094859.2376211-10-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org $(firstword ...) in scripts/Makefile.modpost was added by commit 3f3fd3c05585 ("[PATCH] kbuild: allow multi-word $M in Makefile.modpost") to build multiple external module directories. This feature has been broken for a while. Remove the bitrotten code, and stop parsing if M or KBUILD_EXTMOD contains multiple words. Signed-off-by: Masahiro Yamada --- Makefile | 3 +++ scripts/Makefile.modpost | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1915630cc24b..aeb690c692ee 100644 --- a/Makefile +++ b/Makefile @@ -218,6 +218,9 @@ ifeq ("$(origin M)", "command line") KBUILD_EXTMOD := $(M) endif +$(if $(word 2, $(KBUILD_EXTMOD)), \ + $(error building multiple external modules is not supported)) + export KBUILD_CHECKSRC KBUILD_EXTMOD extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index 957eed6a17a5..b79bf0e30d32 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -44,7 +44,7 @@ include include/config/auto.conf include scripts/Kbuild.include kernelsymfile := $(objtree)/Module.symvers -modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers +modulesymfile := $(KBUILD_EXTMOD)/Module.symvers MODPOST = scripts/mod/modpost \ $(if $(CONFIG_MODVERSIONS),-m) \ From patchwork Sun May 17 09:48:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554063 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DB7CE14B7 for ; Sun, 17 May 2020 09:51:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BA44A2065F for ; Sun, 17 May 2020 09:51:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709070; bh=HmPW0B6m9fN4YEWgNESi+upgw0chqrek8y0TCtFUCaQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=0lwwQUswB0yCsp6smsfuQ0fiRJtT21FOzeNB0MaLh0G5udUkBUqEua80K+C2pl0vC tvZtcOPDB79zMHBXLtJVLZYItK5itKkdT60OiZaBnt2oWeIVlo2bUbwF2nUOsWkFSX VtB4jJbnLP9j08Y4xUmGo9SR3hXMa+qTyTIFh3l4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727833AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38296 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727125AbgEQJte (ORCPT ); Sun, 17 May 2020 05:49:34 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L7018560; Sun, 17 May 2020 18:49:11 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L7018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708951; bh=6Cr9X2+4BN3lVVZXhv05Fyg+wVggFB+AaKLKTTsUPlY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Bup/iJkGpO7CpryozjlUvShNo2kHLXyFqBwt5QaqHD98AmbzDSNJ0rv4spEKK6qcg dLrZPhW+TbZponso5fudJRA2WKp0xnvNklZ+mhXbC9wrARfmxQZVNOsGhxaA5lGXZF Fo9LpYKdaKJ3kPIj4NsDSVCrM9M5LVHMXAy9tKwdqmvSU7+7Ehmg/JCIWKXu7oHlGn /qoXcAFc+pyHUCjkMYBeRzGxqJ2Lph0j84FjS+ozvh8vZHBDHrNr0pJWEnniAshs9m NsIwmuqakHBYKf4D/MVLyNGyR+SxHfin5jbNRCGUGgCGIv+DvDSmFcIZdfAwoRbTJV qTKX0ey1TW63Q== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 10/29] modpost: move -T option close to the modpost command Date: Sun, 17 May 2020 18:48:40 +0900 Message-Id: <20200517094859.2376211-11-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The '-T -' option reads the file list from stdin. It is clearer to put it close to the piped command. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index b79bf0e30d32..da7730a43819 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -66,7 +66,7 @@ __modpost: else -MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s -T - \ +MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s \ $(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) ifeq ($(KBUILD_EXTMOD),) @@ -88,7 +88,7 @@ modules := $(sort $(shell cat $(MODORDER))) # Read out modules.order instead of expanding $(modules) to pass in modpost. # Otherwise, allmodconfig would fail with "Argument list too long". quiet_cmd_modpost = MODPOST $(words $(modules)) modules - cmd_modpost = sed 's/ko$$/o/' $(MODORDER) | $(MODPOST) + cmd_modpost = sed 's/ko$$/o/' $(MODORDER) | $(MODPOST) -T - __modpost: $(call cmd,modpost) From patchwork Sun May 17 09:48:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554049 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C6A1D618 for ; Sun, 17 May 2020 09:50:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A45E42065F for ; Sun, 17 May 2020 09:50:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709051; bh=9LI3JIVQiKmqDC/p6tUdDJL8PK7qoZyG8zRAVS3e36Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=bVW8OyfXUtPI1a1JahqBpsrSEz7/KYCFcmkMSADW4jVrHWXMILiox63I/YAJPsMsu kpVvZrJ6GfFXCDAo8oXLsJyzijqAfoxQC3iX8AE1AHo5eZeMKIgXUWUZpSFH/oxjX/ heD9J5q600LbNzxSo8x1jCMk8SQll/S5JCQSH97g= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727845AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38300 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727782AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L8018560; Sun, 17 May 2020 18:49:11 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L8018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708952; bh=FlAOnLT1LqdsWObR2ysUopltjBbbvrDg4vQLoWIKAiM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=15HD2aatotT/Wjw8EgUJG1wCfqw3VQiTGoP2bj8XBPxv6XR3djsRvTp2yL7CZvcF7 /XHrt/3ZHj+fUMyXt7uyQlDk4xAIxp5sXvs1LjwPkeph13YAhKHKBuwruMTJRa40VX OgMkooKQB6EWdPyVom8bM0BWFd7xH12Y4p2duU7mPw8ZVoA2+jiI17S22mkNx1mviy pOoi9wllTF+OVgbn4/Y9VOTjGAqHxgUSpWRIIHR/nXa3VyRdoaIk1aw6bWNWs8k4BW DmiAo87ktf34SFg1idzcBZUTdDONFniFvPnxn1hlmnTcsu3xTNucMgPclPp+l+ZJIt S817cL6f1YiQA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 11/29] modpost: pass -N option only for modules modpost Date: Sun, 17 May 2020 18:48:41 +0900 Message-Id: <20200517094859.2376211-12-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The built-in only code is not required to have MODULE_IMPORT_NS() to use symbols. So, the namespace is not checked for vmlinux(.o). Do not pass the meaningless -N option to the first pass of modpost. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index da7730a43819..bc5561aedb24 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -53,7 +53,6 @@ MODPOST = scripts/mod/modpost \ $(if $(KBUILD_EXTMOD),$(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS))) \ $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ - $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) \ $(if $(KBUILD_MODPOST_WARN),-w) ifdef MODPOST_VMLINUX @@ -66,7 +65,9 @@ __modpost: else +# modpost options for modules (both in-kernel and external) MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s \ + $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) \ $(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) ifeq ($(KBUILD_EXTMOD),) From patchwork Sun May 17 09:48:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554065 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B7730618 for ; Sun, 17 May 2020 09:51:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 925FF2065F for ; Sun, 17 May 2020 09:51:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709071; bh=RF+hFuL3YwXZLBLPwtTxnHK/TvfkxaKkPpgx3op/R7M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=hNX9HPcvgcnKatwcuKTQWgFuzQ94eSgbREAjf3C0zJJs9Gwnu/ikwXvjYE7ln9qr+ HLZCxKmK05mlbIR+Xf7IiRIPZ+SVUaDQJrvlBaO9T8P9RYcBopbx05cldU3TNluPGx gkhgCIJx/o3Hw8rLuaYzQhVXd6vDXT/Tg2dJqGbM= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727768AbgEQJvL (ORCPT ); Sun, 17 May 2020 05:51:11 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38298 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727113AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4L9018560; Sun, 17 May 2020 18:49:12 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4L9018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708952; bh=fKQ2suNbonPmMpy+xo1CkibGOmskSnkybnUC1ujH2W0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OHlez3+wyMKPlWr+X8K+9UOvN4ATUr1THtxYvbI9jU3dZO8plShQFKy9Onx5uvBJj vKA2YbzH7iPwEZrs5hjG/WQHOgAOL5yS++JNk1KKRaezmtffCJZqAumw3H6wSeEKby 2Sfqr/DG5vRgNJSDKPauYNXttGjQbUOxFZU1ZUFwu+iy8xmNJuoPpTuVGa2LF4DDhL y5zizcg8aTTJitesUGn4O5gl5RnHnwtV41y3d/qylfwiLdIp2fKKYvAdO+qThe4vG5 tktYnGiH+IDZmCPNtwDE4+4XZLp3Exrlhujr5+JA5R5k4DAIt0GZbXg426pdMHbxRL Yxd/isp9zdDIg== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 12/29] modpost: move external module options Date: Sun, 17 May 2020 18:48:42 +0900 Message-Id: <20200517094859.2376211-13-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Separate out the external-only code for readability. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index bc5561aedb24..8321068abb31 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -44,14 +44,11 @@ include include/config/auto.conf include scripts/Kbuild.include kernelsymfile := $(objtree)/Module.symvers -modulesymfile := $(KBUILD_EXTMOD)/Module.symvers MODPOST = scripts/mod/modpost \ $(if $(CONFIG_MODVERSIONS),-m) \ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \ - $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \ - $(if $(KBUILD_EXTMOD),$(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS))) \ - $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ + $(if $(KBUILD_EXTMOD),,-o $(kernelsymfile)) \ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ $(if $(KBUILD_MODPOST_WARN),-w) @@ -81,6 +78,13 @@ src := $(obj) # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile) + +# modpost options for external modules +MODPOST += \ + -i Module.symvers \ + $(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS)) \ + -o $(KBUILD_EXTMOD)/Module.symvers + endif # find all modules listed in modules.order From patchwork Sun May 17 09:48:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554053 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BA37214B7 for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9852A2065F for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709052; bh=WDJLBVSfcZ2d1BN1O6PlVxX1SUdJvt57YpXkrB8Zbkk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=ohf7T+BYYSbIFT4BMw234f/DjN5eNA2721mdh9lA7YOE5tTllOD4yV2eBkyaYmcRB NLLSBFkH4PwVO2LP1fIf+/KCJkmaoeW/SNj5kp1LehnGKbHXh8V6pCbjDwUiwN6lk4 XjEGhkYOnDE7sgisLK29qecRW4P/45tDMwgY7+6k= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728219AbgEQJuw (ORCPT ); Sun, 17 May 2020 05:50:52 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38299 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727779AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LA018560; Sun, 17 May 2020 18:49:13 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LA018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708953; bh=r15Zqyu0314pn0p8/OzIECBjRDQoaidbyvoxk5EXhGc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aoJSSGVWYjqnFp5uHAh+aIIKwJSoQM+n7z4vETmuBec1W4bcNW18vQpkg+gQgEkrq A622fchT5MC89C7NkFsheevHHSXo84U4tu6fXZ82K3vly8JCyQDUQ1Y+x767lXsnzR wZulJSCUSP17iU7bvSMM8SbRD/YVj1R9pA0YWEv5FVnWrW1ytLjrur/Jpg0ixnZMaM WcXH18ceUoLOBuO8bFulZtzo6zgiUAiaND8ldmbMyuaWg4Ozn8h7UOWi+ozw2C4lqx 6DVb+eVLx2N9yoaNonIRSbdZ5Nxs8D93960ftaLFKuHNSo2btkpEYFKXKJ5lu56L9i 8J2JG9AYCDR7g== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 13/29] modpost: load KBUILD_EXTRA_SYMBOLS files in order Date: Sun, 17 May 2020 18:48:43 +0900 Message-Id: <20200517094859.2376211-14-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Currently, modpost reads extra symbol dump files in the reverse order. If '-e foo -e bar' is given, modpost reads bar, foo, in this order. This is probably not a big deal, but there is no good reason to reverse the order. Read files in the given order. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index cd3cb781a2e7..dc8f15f10da0 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2559,8 +2559,8 @@ int main(int argc, char **argv) int opt; int err; int n; - struct ext_sym_list *extsym_iter; struct ext_sym_list *extsym_start = NULL; + struct ext_sym_list **extsym_iter = &extsym_start; while ((opt = getopt(argc, argv, "i:e:mnsT:o:awENd:")) != -1) { switch (opt) { @@ -2570,11 +2570,9 @@ int main(int argc, char **argv) break; case 'e': external_module = 1; - extsym_iter = - NOFAIL(malloc(sizeof(*extsym_iter))); - extsym_iter->next = extsym_start; - extsym_iter->file = optarg; - extsym_start = extsym_iter; + *extsym_iter = NOFAIL(calloc(1, sizeof(**extsym_iter))); + (*extsym_iter)->file = optarg; + extsym_iter = &(*extsym_iter)->next; break; case 'm': modversions = 1; @@ -2614,10 +2612,12 @@ int main(int argc, char **argv) if (kernel_read) read_dump(kernel_read, 1); while (extsym_start) { + struct ext_sym_list *tmp; + read_dump(extsym_start->file, 0); - extsym_iter = extsym_start->next; + tmp = extsym_start->next; free(extsym_start); - extsym_start = extsym_iter; + extsym_start = tmp; } while (optind < argc) From patchwork Sun May 17 09:48:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554045 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4391B138A for ; Sun, 17 May 2020 09:50:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2BA9C207FB for ; Sun, 17 May 2020 09:50:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709045; bh=15giKF/3s32ql7R3PEYFVy/DPYrO4zHhys4k5EIDq+s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=bGKv8SBXenY4RUSe3IFNDtlKwAhAXeVEI/3oWic/cLOEEqCI0KLQraeIHYtu49hFx GxCv0pAnDlAGLkS4ld25kJIMf3+kT10hlLr1n9HesBSwX7l8Le0oRzo1aGvv98/UZZ G0HSePBBFAh2Gl73xf90xS6HdcuRORwLUv1y6AyU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728187AbgEQJuo (ORCPT ); Sun, 17 May 2020 05:50:44 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38328 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727805AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LB018560; Sun, 17 May 2020 18:49:13 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LB018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708954; bh=kyFNp6jSWWJylXeIdrvZgK47aw2CEOiIJ8nHYJlvTww=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PqLqCAlEN3/kegDZo3N9F72wSIxrh03f0v/KqCib66QzoFd1lvkWVwbxfyqrHEg9i tK3Mkrg0b6BpLxJLrP3NQvKbgsdp4vdqiF1e1TrD3pg2AfXsUT1TsThTi04LdSzKEo SXUblcvkYGzYE0M30WNuEtKhdabfLWtQACZaoTHi4lp/eIM0Ma27YSFDxnLrFISipX k+Dm4/Sw8WpuK44x77hFkjS21DDSDRGfwxHw9BYtLZ8ESWCtznEkqbDk8OXpvoX4s8 glQB79sqk2gY/d/Cy2/H775xXs6oGL1dJzVVReNqj9NwCAFvSdDqpmfJsMoEydyrOB /1yIV8UnBl9KA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 14/29] modpost: track if the symbol origin is a dump file or ELF object Date: Sun, 17 May 2020 18:48:44 +0900 Message-Id: <20200517094859.2376211-15-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The meaning of sym->kernel is obscure; it is set for in-kernel symbols loaded from Modules.symver. This happens only when we are building external modules, and it is used to determine whether to dump symbols to $(KBUILD_EXTMOD)/Modules.symver It is clearer to remember whether the symbol or module came from a dump file or ELF object. This changes the KBUILD_EXTRA_SYMBOLS behavior. Previously, symbols loaded from KBUILD_EXTRA_SYMBOLS are accumulated into the current $(KBUILD_EXTMOD)/Modules.symver Going forward, they will be only used to check symbol references, but not dumped into the current $(KBUILD_EXTMOD)/Modules.symver. I believe this makes more sense. sym->vmlinux will have no user. Remove it too. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 15 +++++---------- scripts/mod/modpost.h | 1 + 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index dc8f15f10da0..340b88647e94 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -197,9 +197,6 @@ struct symbol { int crc_valid; char *namespace; unsigned int weak:1; - unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */ - unsigned int kernel:1; /* 1 if symbol is from kernel - * (only for external modules) **/ unsigned int is_static:1; /* 1 if symbol is not global */ enum export export; /* Type of export */ char name[]; @@ -431,8 +428,6 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod, } s->module = mod; - s->vmlinux = is_vmlinux(mod->name); - s->kernel = 0; s->export = export; return s; } @@ -2430,7 +2425,7 @@ static void write_if_changed(struct buffer *b, const char *fname) /* parse Module.symvers file. line format: * 0x12345678symbolmoduleexportnamespace **/ -static void read_dump(const char *fname, unsigned int kernel) +static void read_dump(const char *fname) { char *buf, *pos, *line; @@ -2469,9 +2464,9 @@ static void read_dump(const char *fname, unsigned int kernel) have_vmlinux = 1; mod = new_module(modname); mod->skip = 1; + mod->from_dump = 1; } s = sym_add_exported(symname, mod, export_no(export)); - s->kernel = kernel; s->is_static = 0; sym_set_crc(symname, crc); sym_update_namespace(symname, namespace); @@ -2491,7 +2486,7 @@ static int dump_sym(struct symbol *sym) { if (!external_module) return 1; - if (sym->vmlinux || sym->kernel) + if (sym->module->from_dump) return 0; return 1; } @@ -2610,11 +2605,11 @@ int main(int argc, char **argv) } if (kernel_read) - read_dump(kernel_read, 1); + read_dump(kernel_read); while (extsym_start) { struct ext_sym_list *tmp; - read_dump(extsym_start->file, 0); + read_dump(extsym_start->file); tmp = extsym_start->next; free(extsym_start); extsym_start = tmp; diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index 232a0e11fcaa..aaf3c4ad5d60 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -119,6 +119,7 @@ struct module { const char *name; int gpl_compatible; struct symbol *unres; + int from_dump; /* 1 if module was loaded from *.symver */ int seen; int skip; int has_init; From patchwork Sun May 17 09:48:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554039 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 24CA1138A for ; Sun, 17 May 2020 09:50:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0D11920735 for ; Sun, 17 May 2020 09:50:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709034; bh=153qbt6zdgPrBNzsTsFmMgx7plf/KAaVn4AAZGV1Iws=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=aCLXtRTLq5ZpYWeGcAq/ZOSNylFBtTg+e/FQVc65kK2gkG9upURxjvSDIqgODzzFj YU07k3ejc+oLvIIN7+8lQS8/DnEp6JZuggLLvueDyUzHXnIT9fEMySJYN7teZY8oVn Pd5CjfDWfFbuE3SceI7U1n1HF00FZPjo0fJGUa0Q= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728138AbgEQJud (ORCPT ); Sun, 17 May 2020 05:50:33 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38318 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727798AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LC018560; Sun, 17 May 2020 18:49:14 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LC018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708954; bh=EH6Tl9YafH5Uj3o4QwAgcCL2CdVbpltrRpGmnprwbPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jjWXr8/G5Mre+10DI0OtdfIOh7FYZk7jkwsOb+HgjVd2xghOEYi5HLBOpNszt8thm rn0Ukft7gRtLgXUw3Sii2GCC6nZ/c+6FrAlI/2bi/Woc73+lKht/VmajXieSzQK8Oj QsZEibGOpnsks+PHy24JLuDNRb0BWncLT82Cq5ht/yDQOGtGQZ0mcISuMPjiUiaAtg 54d6FlZ86ieMIY3uQNoRSTFrFOU8m+TvMr7I/ebLBMVGZGnLrfWhgHGYrEge5p+ppG i6OJHqMcv3zyLW8qxoz07WWMA6xsJmY6iGcKQSCpEAL01kQZNTugAPJedQKHYFmrvr bRuag0YZ9HSrA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 15/29] modpost: allow to pass -i option multiple times remove -e option Date: Sun, 17 May 2020 18:48:45 +0900 Message-Id: <20200517094859.2376211-16-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Now that there is no difference in the functionality of -i and -e, they can be unified. Make modpost accept the -i option multiple times, then remove -e. I will reuse -e for a different purpose. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 2 +- scripts/mod/modpost.c | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index 8321068abb31..a316095c843c 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -82,7 +82,7 @@ include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ # modpost options for external modules MODPOST += \ -i Module.symvers \ - $(addprefix -e ,$(KBUILD_EXTRA_SYMBOLS)) \ + $(addprefix -i ,$(KBUILD_EXTRA_SYMBOLS)) \ -o $(KBUILD_EXTMOD)/Module.symvers endif diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 340b88647e94..d3141b217b57 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2548,7 +2548,6 @@ int main(int argc, char **argv) { struct module *mod; struct buffer buf = { }; - char *kernel_read = NULL; char *missing_namespace_deps = NULL; char *dump_write = NULL, *files_source = NULL; int opt; @@ -2557,13 +2556,9 @@ int main(int argc, char **argv) struct ext_sym_list *extsym_start = NULL; struct ext_sym_list **extsym_iter = &extsym_start; - while ((opt = getopt(argc, argv, "i:e:mnsT:o:awENd:")) != -1) { + while ((opt = getopt(argc, argv, "i:mnsT:o:awENd:")) != -1) { switch (opt) { case 'i': - kernel_read = optarg; - external_module = 1; - break; - case 'e': external_module = 1; *extsym_iter = NOFAIL(calloc(1, sizeof(**extsym_iter))); (*extsym_iter)->file = optarg; @@ -2604,8 +2599,6 @@ int main(int argc, char **argv) } } - if (kernel_read) - read_dump(kernel_read); while (extsym_start) { struct ext_sym_list *tmp; From patchwork Sun May 17 09:48:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554013 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B34B6913 for ; Sun, 17 May 2020 09:49:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 93F182065F for ; Sun, 17 May 2020 09:49:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708986; bh=G8Q9sgxbz5P7WT8++b2R0ScBmMxAZBQzNvjqyUcLoe4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=MvhTQhL/OC/+Pw1YR0c+qqfgku6ZVq9pk39+eUbN2nDPSOlnaZYU9DMz2HwOblPaq JF6II7CmYUR6ERnHT98ad46xWkHDiaTxOeHGwJkx+RXlbFnVtafmijfb5aLdFIoaBz LR1G3SHS9hIk64QV2K4uERq0Nrg2QiK5nVo6j5Zg= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727898AbgEQJti (ORCPT ); Sun, 17 May 2020 05:49:38 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38321 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727801AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LD018560; Sun, 17 May 2020 18:49:14 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LD018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708955; bh=q9DY23z18Rjre2W0GdlwfJlDVc8bgB3qqCnPYlhBcEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Erojqq4vQ/kfYMLGO9XAikgELJM07GkAQ2tAwwiUkM/4nllCwZ+w/iureQTabCzUR eg1MCdYd8fahWqrcUuWOtzidWrxTut7/iqW5VVWqWjcTGRGdYAprxqjKx4inc8/ne7 kE5uZEGSIetvzGmPeJP2I3LgYtlQ1knscT4HZMVj1njSbumKxvK5jKsY86OQrIfXxB g13mQ6voyJzbu3z5lLzmxutTjM7e56Br22u8a4UcLC/qnpoj8oKAXztXYps10pWwHO EOZROXkC9l5nOkTqG5ItZtOBoLVV31BoRiNJU5rEIsxu/MoK9B1qwK9FLT8iWeiUIk flWYILhhCmp6A== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 16/29] modpost: rename ext_sym_list to dump_list Date: Sun, 17 May 2020 18:48:46 +0900 Message-Id: <20200517094859.2376211-17-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The -i option is used to include Modules.symver as well as files from $(KBUILD_EXTRA_SYMBOLS). Make the struct and variable names more generic. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index d3141b217b57..a5bac158d344 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2539,8 +2539,8 @@ static void write_namespace_deps_files(const char *fname) free(ns_deps_buf.p); } -struct ext_sym_list { - struct ext_sym_list *next; +struct dump_list { + struct dump_list *next; const char *file; }; @@ -2553,16 +2553,17 @@ int main(int argc, char **argv) int opt; int err; int n; - struct ext_sym_list *extsym_start = NULL; - struct ext_sym_list **extsym_iter = &extsym_start; + struct dump_list *dump_read_start = NULL; + struct dump_list **dump_read_iter = &dump_read_start; while ((opt = getopt(argc, argv, "i:mnsT:o:awENd:")) != -1) { switch (opt) { case 'i': external_module = 1; - *extsym_iter = NOFAIL(calloc(1, sizeof(**extsym_iter))); - (*extsym_iter)->file = optarg; - extsym_iter = &(*extsym_iter)->next; + *dump_read_iter = + NOFAIL(calloc(1, sizeof(**dump_read_iter))); + (*dump_read_iter)->file = optarg; + dump_read_iter = &(*dump_read_iter)->next; break; case 'm': modversions = 1; @@ -2599,13 +2600,13 @@ int main(int argc, char **argv) } } - while (extsym_start) { - struct ext_sym_list *tmp; + while (dump_read_start) { + struct dump_list *tmp; - read_dump(extsym_start->file); - tmp = extsym_start->next; - free(extsym_start); - extsym_start = tmp; + read_dump(dump_read_start->file); + tmp = dump_read_start->next; + free(dump_read_start); + dump_read_start = tmp; } while (optind < argc) From patchwork Sun May 17 09:48:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554067 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4E120618 for ; Sun, 17 May 2020 09:51:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3690420671 for ; Sun, 17 May 2020 09:51:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709078; bh=dKKNg/UoEYW8zaQvQRvSEhEsxJ/9p3LYATZuAIlc4x0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=0GLBSi+owvzuHTcc5wO4xERzSKe04OX+JZLl8SokI/t21DiTQNHVgTZ9jAom9nu5M Vn+TDnv3RsJewmcQGBknC0Kjmsdu14NkmDAwxfF1tC+dBEtGi3UyxYVcn5A1+n3jzc q+yOI6dMzC/8C05j3l06y2bLnij2irp2RjAtRUBQ= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728297AbgEQJvO (ORCPT ); Sun, 17 May 2020 05:51:14 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38294 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727048AbgEQJte (ORCPT ); Sun, 17 May 2020 05:49:34 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LE018560; Sun, 17 May 2020 18:49:15 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LE018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708955; bh=UB3CiF5sRofWAi/2dun1IIiUM+7xzM+drcQU+ii5U6E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iwJJtTm47bwT1+BuLbNe4ad1h1EV2WxDu8rH0Iq1kYU9femCouaqse7N9nh7B0fS3 vsGGq9t81A6+0xeChNQWGEtO3txLi2I3HS1zcFfBOH2C2mPeb+qMPc6iQ+4r214Bgw ZfwusdeuB8qF98LHDp7Tny9SlpNkarAN0Ps+VDBIP695KmjfwvCDL7tPJPuRN8vQav K3BWqT9quAPN4MVr0Rcyf8ILQRCWa/XAwsBI/4v8t1/2DDH5kgcw4cCfxDX/2XkJt9 qSqEUx+ZILrHY8bQhG3IePOQZbGs0SlhDf+nqu33WpD8yIYqAj52m17z+U9zib0sBi ncZRCkNqAWVrQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 17/29] modpost: re-add -e to set external_module flag Date: Sun, 17 May 2020 18:48:47 +0900 Message-Id: <20200517094859.2376211-18-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Previously, the -i option had two functions; load a symbol dump file, and set the external_module flag. I want to assign a dedicate option for each of them. Going forward, the -i is used to load a symbol dump file, and the -e to set the external_module flag. With this, we will be able to use -i for loading in-kernel symbols. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 1 + scripts/mod/modpost.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index a316095c843c..d14143b30b7a 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -81,6 +81,7 @@ include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ # modpost options for external modules MODPOST += \ + -e \ -i Module.symvers \ $(addprefix -i ,$(KBUILD_EXTRA_SYMBOLS)) \ -o $(KBUILD_EXTMOD)/Module.symvers diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index a5bac158d344..b14ecfbfd640 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2556,10 +2556,12 @@ int main(int argc, char **argv) struct dump_list *dump_read_start = NULL; struct dump_list **dump_read_iter = &dump_read_start; - while ((opt = getopt(argc, argv, "i:mnsT:o:awENd:")) != -1) { + while ((opt = getopt(argc, argv, "ei:mnsT:o:awENd:")) != -1) { switch (opt) { - case 'i': + case 'e': external_module = 1; + break; + case 'i': *dump_read_iter = NOFAIL(calloc(1, sizeof(**dump_read_iter))); (*dump_read_iter)->file = optarg; From patchwork Sun May 17 09:48:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554055 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E2A5D159A for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BFA1A2065F for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709052; bh=PeDb1pD/k9dcZ9de7S12dRk3gspCxUK6Jt20whGNBnw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=owNgXXZaoqA+ZS2eSh53l0GyLQdyY+m6PkVgxeTSGJ9vRu4B8I0XaZYyftr3D1GGf W3uxvraAjxHFxRAMK1GZHSN7Ef2zTia/yNSw4ENcmf0/jMtdGh46pAAavbZ+/sJIsG CyvXvWYf5WDpVJXmA/WI/tzHYCm9pjFpqtSgRq3I= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728224AbgEQJuw (ORCPT ); Sun, 17 May 2020 05:50:52 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38304 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727780AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LF018560; Sun, 17 May 2020 18:49:16 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LF018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708956; bh=j6wsEFU4ZcKF4NPr4DfjF9axIs0Sidaw0zTXsYPAy7A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U2WWQaHwnMz4agedu7Is/7ZBE1xWaZmv2LrLfO4i5dns6ctK7/vzY9qGYlzbsjgMR aput7/2IGj9E8qkBwWVgrOWa1cnBH/wtNnXDGVK2pQuc+ZBl7AF3YYI0id1jTy4ppa pWw2UBlX9u0zs4DZPW6Di9xaS9ia/dDWJx3IS1ee3OHawLgxzyJPunU05CXfdE9i21 rLG9ePgM64VgnwddVcJRsVEhDYhRCTs2NM/b2N3VfWChE/JIpyzq7gd5sWp8hqEjBx Aii8HC0NcRSmsvBGZPv0LCtlzNjOIfsoJ8/vppSRYgq5Jn2GjC05UyA1XdjYESCtTq XgZrAErR+WU7w== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 18/29] modpost: show warning if vmlinux is not found when processing modules Date: Sun, 17 May 2020 18:48:48 +0900 Message-Id: <20200517094859.2376211-19-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org check_exports() does not print warnings about unresolved symbols if vmlinux is missing because there would be too many. This situation happens when you do 'make modules' from the clean tree, or compile external modules against a kernel tree that has not been completely built. Not checking unresolved symbols is dangerous because you might be building useless modules. At least it should be noted. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index b14ecfbfd640..8150be00e3df 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2004,8 +2004,6 @@ static void read_symbols(const char *modname) mod = new_module(modname); - /* When there's no vmlinux, don't print warnings about - * unresolved symbols (since there'll be too many ;) */ if (is_vmlinux(modname)) { have_vmlinux = 1; mod->skip = 1; @@ -2617,6 +2615,13 @@ int main(int argc, char **argv) if (files_source) read_symbols_from_files(files_source); + /* + * When there's no vmlinux, don't print warnings about + * unresolved symbols (since there'll be too many ;) + */ + 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) { From patchwork Sun May 17 09:48:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554041 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3FBFD618 for ; Sun, 17 May 2020 09:50:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 270D820727 for ; Sun, 17 May 2020 09:50:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709040; bh=tlJewrwL31JI+7fUF4XnE+WgsSXR1mjmjrHA4XmYEiw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=IwCrGIlX1Io+HdGht6GmJCQRnWvyzyZMQPn7P13pgtUolRK8Ilo2812RRu1fQJnZA GkFq5WEmbpqgjuoULQMDbMaDKOybhoFSSK+gmBeXqRzoalsGf0hCqVWAc0G/FK9Bhn EFrsLXEqkKpHQdXNIy0StHnl/OHayAoPI9R8pyNs= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728142AbgEQJud (ORCPT ); Sun, 17 May 2020 05:50:33 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38334 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727815AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LG018560; Sun, 17 May 2020 18:49:16 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LG018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708957; bh=3cOKyKsGmuqpr2zeueDZI3YVHjDzjgw0wEw4sjujv90=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fq8BIDstruEuB67I0HFwq+pPP7mpG5a4LDFOGCzbBz6QOnbjc0wA5FEC0cwXtRNNv X5Noj9WW0L0Z3XX9725cWG7ncmoLONUmsz5WuOWu7WuHZo5h42s1KhjUlvr3uYVD+K tZUKF8leQmg27Plvv3Ek+314AeKxePh6yeFg3+x7/GBuMrfurxMT4fgYMW3V370w9L okYktx3Dnxe1a82Ek2oE2chZTw1wsh5ADlqjsTtwyJouIJ/NciQNoqiH+E2UvxfUik 6BU7TUmj7BPa+ZGJI7zarRy62bCrMKeZdMf/Akird2zP7bX6WaNw/PDcUEivCFdgQ7 Zg8c1rPAACe1A== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 19/29] modpost: show warning if it fails to read symbol dump file Date: Sun, 17 May 2020 18:48:49 +0900 Message-Id: <20200517094859.2376211-20-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org If modpost fails to load a symbol dump file, it cannot check unresolved symbols, hence module dependency will not be added. Nor CRCs can be added. Currently, external module builds check only $(objtree)/Module.symvers, but it should check files specified by KBUILD_EXTRA_SYMBOLS as well. Print the warnings in modpost. The warning in Makefile is unneeded. Signed-off-by: Masahiro Yamada --- Makefile | 10 +--------- scripts/mod/modpost.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index aeb690c692ee..27e8a0522a3c 100644 --- a/Makefile +++ b/Makefile @@ -1638,17 +1638,9 @@ else # KBUILD_EXTMOD # We are always building modules KBUILD_MODULES := 1 -PHONY += $(objtree)/Module.symvers -$(objtree)/Module.symvers: - @test -e $(objtree)/Module.symvers || ( \ - echo; \ - echo " WARNING: Symbol version dump $(objtree)/Module.symvers"; \ - echo " is missing; modules will have no dependencies and modversions."; \ - echo ) - build-dirs := $(KBUILD_EXTMOD) PHONY += modules -modules: descend $(objtree)/Module.symvers +modules: descend $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost PHONY += modules_install diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 8150be00e3df..ff715623b37e 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -41,6 +41,8 @@ static int sec_mismatch_fatal = 0; static int ignore_missing_files; /* If set to 1, only warn (instead of error) about missing ns imports */ static int allow_missing_ns_imports; +/* Set when at list one dump file is missing */ +static int missing_dump_file; enum export { export_plain, export_unused, export_gpl, @@ -2428,9 +2430,11 @@ static void read_dump(const char *fname) char *buf, *pos, *line; buf = read_text_file(fname); - if (!buf) - /* No symbol versions, silently ignore */ + if (!buf) { + warn("failed to read '%s'\n", fname); + missing_dump_file = 1; return; + } pos = buf; @@ -2615,6 +2619,9 @@ int main(int argc, char **argv) if (files_source) read_symbols_from_files(files_source); + if (missing_dump_file) + warn("Symbol dump file is missing. Modules may not have dependencies or movversions.\n"); + /* * When there's no vmlinux, don't print warnings about * unresolved symbols (since there'll be too many ;) From patchwork Sun May 17 09:48:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554035 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1B91514B7 for ; Sun, 17 May 2020 09:50:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0178620727 for ; Sun, 17 May 2020 09:50:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709023; bh=2QNSjsHZQIRQEjmAJwljJttRTcv9hT34NP+mJxFgdkw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=xRKmvN9EmT6eZ4BwkYrIS0Ds1+aLKJN7usBJPBizmwBNOCK5gnoEH9j+PKJ2edt+X h2IfV3yUlqMOSR5pZD1IrFebn1iVOcH7lPhh+Dxiau6KcUNeIVeQStlOaBevSTFIo+ CnGy1Fe0Qv95fxv0qrARkcS6ntvkbS68DN3IvbmA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728098AbgEQJuW (ORCPT ); Sun, 17 May 2020 05:50:22 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38314 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727796AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LH018560; Sun, 17 May 2020 18:49:17 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LH018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708957; bh=72IaotGqVMjE7/yt/MCBDsa6PL38XW+WDf2aqfQLvsQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mfHtc6p+utdmVF+6W5P4suqQ4iqogn+SNZN7iDD/eb/Wp9sZdD9cFlc/v9qEM76hj /fKFvHnhpDkNLXO9Rg7RLb8XCWmWG1Ib2O2JUN9FpiE2a5/+cLerNpsd+k1U6zCgjF AynpskhaEB9a5xIXrSd26+hQBCaZ5jILlJQ8jZ0tNB7bRKEbYUYqDNIaRQ2Mp8IM6u BuMpc2y1K9ACyvzuBzRtwulRaMzz2k3xZrNdD7m3w+C2KDXMrmnD3fpf8P3MOwlei3 rLsznrxIgHwNkteUAa0uw39cgRJfW3Q/h6EAyEBZI9mKZ8A1q+FY5MVaNpOS+ud6m8 ToXOf5GhBW05Q== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 20/29] modpost: generate vmlinux.symvers and reuse it for the second modpost Date: Sun, 17 May 2020 18:48:50 +0900 Message-Id: <20200517094859.2376211-21-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The full build runs modpost twice, first for vmlinux.o and second for modules. The first pass dumps all the vmlinux symbols into Module.symvers, but the second pass parses vmlinux again instead of reusing the dump file, presumably because it needs to avoid accumulating stale symbols. Loading symbol info from a dump file is faster than parsing an ELF object. Besides, modpost deals with various issues to parse vmlinux in the second pass. A solution is to make the first pass dumps symbols into a separate file, vmlinux.symvers. The second pass reads it, and parses module .o files. The merged symbol information is dumped into Module.symvers as before. This makes further modpost cleanups possible. Also, it fixes the problem of 'make vmlinux', which previously overwrote Module.symvers, throwing away module symbols. I slightly touched scripts/link-vmlinux.sh so that vmlinux is re-linked when you cross this commit. Otherwise, vmlinux.symvers would not be generated. Signed-off-by: Masahiro Yamada --- .gitignore | 1 + Makefile | 2 +- scripts/Makefile.modpost | 11 +++++++---- scripts/link-vmlinux.sh | 2 -- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 2258e906f01c..87b9dd8a163b 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,7 @@ modules.order /linux /vmlinux /vmlinux.32 +/vmlinux.symvers /vmlinux-gdb.py /vmlinuz /System.map diff --git a/Makefile b/Makefile index 27e8a0522a3c..43988ce4e17e 100644 --- a/Makefile +++ b/Makefile @@ -1405,7 +1405,7 @@ endif # CONFIG_MODULES # make distclean Remove editor backup files, patch leftover files and the like # Directories & files removed with 'make clean' -CLEAN_FILES += include/ksym \ +CLEAN_FILES += include/ksym vmlinux.symvers \ modules.builtin modules.builtin.modinfo modules.nsdeps # Directories & files removed with 'make mrproper' diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index d14143b30b7a..1c597999b6a0 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -43,17 +43,17 @@ __modpost: include include/config/auto.conf include scripts/Kbuild.include -kernelsymfile := $(objtree)/Module.symvers - MODPOST = scripts/mod/modpost \ $(if $(CONFIG_MODVERSIONS),-m) \ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \ - $(if $(KBUILD_EXTMOD),,-o $(kernelsymfile)) \ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ $(if $(KBUILD_MODPOST_WARN),-w) ifdef MODPOST_VMLINUX +# modpost options for vmlinux.o +MODPOST += -o vmlinux.symvers + quiet_cmd_modpost = MODPOST vmlinux.o cmd_modpost = $(MODPOST) vmlinux.o @@ -68,7 +68,10 @@ MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s \ $(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) ifeq ($(KBUILD_EXTMOD),) -MODPOST += $(wildcard vmlinux) + +# modpost options for in-kernel modules +MODPOST += -i vmlinux.symvers -o Module.symvers + else # set src + obj - they may be used in the modules's Makefile diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index d09ab4afbda4..d5af6be50b50 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -218,8 +218,6 @@ on_signals() } trap on_signals HUP INT QUIT TERM -# -# # Use "make V=1" to debug this script case "${KBUILD_VERBOSE}" in *1*) From patchwork Sun May 17 09:48:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554015 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B4639138A for ; Sun, 17 May 2020 09:49:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9A70C2065F for ; Sun, 17 May 2020 09:49:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589708988; bh=VZYWrsno8uUAYcRLOLZAnMwrpQ73bgGyNQHMjkN2ijw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=OAq4EUL2tBJi1/rbRcgNamEhkQYFK8GzGxl1209b6dPKcWCGe/FWOqrU2vNoxra+l dNsFiGsY74jn7E/yx6/562bIGgDw1omN0uqC7ZvofnG5OJPnXWUFw0JyFJlMhv13dx PtAjWpB5NVpie/C5rep92KXyJ4Wi6QeKhf8BTN+A= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727938AbgEQJtr (ORCPT ); Sun, 17 May 2020 05:49:47 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38336 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727823AbgEQJth (ORCPT ); Sun, 17 May 2020 05:49:37 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LI018560; Sun, 17 May 2020 18:49:17 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LI018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708958; bh=Jq5KPdK2SrGwy3yG8IpxZntWGCJlXQt0dlxR4EZDgY0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0aM9P/Q2Jj0ICohSgvk6LhuPCkKoMKUzgHzJFE1TJ4oaOB17sPDeQKp1tOwEXEHVZ zf2b3PhEkOKtPf0CQhTGVuZ1cie42bBjuPzO9StJ5SnBqkPceUp6auKrAyxrBadhvf zUt5aD0f+cEPh+1cpBIqXw9/s+3Ia4YOHizMSntGxNs9v22DW2PlpJChnugzZe62im Zfu6esaPiYMlsN+P/PKnGvA2YpuAs0NvXCbWGeyOoGfhzdSA+rZRbE6NJGrirRKyhc HXkeOMXdTFomY1J4y+HFyNOrbfJi7tlDReZo1+BCQTBiZ786qEaMwQiSI2HsKQs7ng WXAb9GzEl7sTA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 21/29] modpost: remove -s option Date: Sun, 17 May 2020 18:48:51 +0900 Message-Id: <20200517094859.2376211-22-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The -s option was added by commit 8d8d8289df65 ("kbuild: do not do section mismatch checks on vmlinux in 2nd pass"). Now that the second pass does not parse vmlinux, this option is unneeded. Signed-off-by: Masahiro Yamada --- scripts/Makefile.modpost | 2 +- scripts/mod/modpost.c | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index 1c597999b6a0..67db4bba2d45 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -63,7 +63,7 @@ __modpost: else # modpost options for modules (both in-kernel and external) -MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) -s \ +MODPOST += $(subst -i,-n,$(filter -i,$(MAKEFLAGS))) \ $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) \ $(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index ff715623b37e..c6e1a349421c 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -30,8 +30,6 @@ static int have_vmlinux = 0; static int all_versions = 0; /* If we are modposting external module set to 1 */ static int external_module = 0; -/* Warn about section mismatch in vmlinux if set to 1 */ -static int vmlinux_section_warnings = 1; /* Only warn about unresolved symbols */ static int warn_unresolved = 0; /* How a symbol is exported */ @@ -2068,8 +2066,7 @@ static void read_symbols(const char *modname) } } - if (!is_vmlinux(modname) || vmlinux_section_warnings) - check_sec_ref(mod, modname, &info); + check_sec_ref(mod, modname, &info); if (!is_vmlinux(modname)) { version = get_modinfo(&info, "version"); @@ -2558,7 +2555,7 @@ int main(int argc, char **argv) struct dump_list *dump_read_start = NULL; struct dump_list **dump_read_iter = &dump_read_start; - while ((opt = getopt(argc, argv, "ei:mnsT:o:awENd:")) != -1) { + while ((opt = getopt(argc, argv, "ei:mnT:o:awENd:")) != -1) { switch (opt) { case 'e': external_module = 1; @@ -2581,9 +2578,6 @@ int main(int argc, char **argv) case 'a': all_versions = 1; break; - case 's': - vmlinux_section_warnings = 0; - break; case 'T': files_source = optarg; break; From patchwork Sun May 17 09:48:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554033 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BDA6E618 for ; Sun, 17 May 2020 09:50:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A602B20727 for ; Sun, 17 May 2020 09:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709022; bh=1vb8H5VdIqQcZI4WJHiqD6xYd7hXVS3X5xi2TmLB8ro=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=qAwqVhSEUxSlKUJ+GgJpLBdEAHgg/LHrBj0UCbR2rzDPTwrkpPhF6LrWUv6HUZNN5 nFbLUMYFtGThA9rd2sIZ+NkuFmpG7IOyT+ugeO335AqLxeEOEqY1brwv7VFUqoTTD3 HMF+Ps97FhtVcfZvhBY3zmoAfJBB+f09uX3RZYLc= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728094AbgEQJuW (ORCPT ); Sun, 17 May 2020 05:50:22 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38329 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727811AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LJ018560; Sun, 17 May 2020 18:49:18 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LJ018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708958; bh=QCfppESAf4ZelKdonylQolM1QXcjsKRqQ81Nrx8l7lE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cg3E3ki+WD0NH7AzKEhkANlrCfB/qm6hTQqQDayTHFTshI69mGqjBww7N+9LNJT3G HI12SJ4RAEZYDeZpBy4/Mdwi4ZcFM+bkNQ/1Ete5lDm8tZ3JZSYamxOtHX3lmU7oWK aIGO3T4vUWtcgh0WNvvttqNiJ63s3soYufzT2AjR6mcrLnes+TzdmuMgtFMffm7w1Q wwjIF8LAIFc7k3BYtg8/ZCt2KVqcGa7GsZIWECkvdnaLz2gyzBEylMXPHZLSCetGz6 hMS1QdA8kJrcoShBU0sMoiJqOAwTPS7CMFibhVFHzYd8Z8nNvOqVBPIBeH5w8zGuhs PeZTSjIEN8OKA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 22/29] modpost: remove mod->is_dot_o struct member Date: Sun, 17 May 2020 18:48:52 +0900 Message-Id: <20200517094859.2376211-23-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Previously, there were two cases where mod->is_dot_o is unset: [1] the executable 'vmlinux' in the second pass of modpost [2] modules loaded by read_dump() I think [1] was intended usage to distinguish 'vmlinux.o' and 'vmlinux'. Now that modpost does not parse the executable 'vmlinux', this case does not happen. [2] is obscure, maybe a bug. Module.symver stores module paths without extension. So, none of modules loaded by read_dump() has the .o suffix, and new_module() unsets ->is_dot_o. Anyway, it is not a big deal because handle_symbol() is not called for the case. To sum up, all the parsed ELF files are .o files. mod->is_dot_o is unneeded. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 14 ++------------ scripts/mod/modpost.h | 1 - 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index c6e1a349421c..7136bfc8f46a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -171,10 +171,8 @@ static struct module *new_module(const char *modname) p = NOFAIL(strdup(modname)); /* strip trailing .o */ - if (strends(p, ".o")) { + if (strends(p, ".o")) p[strlen(p) - 2] = '\0'; - mod->is_dot_o = 1; - } /* add to list */ mod->name = p; @@ -702,8 +700,7 @@ static void handle_symbol(struct module *mod, struct elf_info *info, enum export export; const char *name; - if ((!is_vmlinux(mod->name) || mod->is_dot_o) && - strstarts(symname, "__ksymtab")) + if (strstarts(symname, "__ksymtab")) export = export_from_secname(info, get_secindex(info, sym)); else export = export_from_sec(info, get_secindex(info, sym)); @@ -2661,13 +2658,6 @@ int main(int argc, char **argv) struct symbol *s; for (s = symbolhash[n]; s; s = s->next) { - /* - * Do not check "vmlinux". This avoids the same warnings - * shown twice, and false-positives for ARCH=um. - */ - if (is_vmlinux(s->module->name) && !s->module->is_dot_o) - continue; - if (s->is_static) warn("\"%s\" [%s] is a static %s\n", s->name, s->module->name, diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index aaf3c4ad5d60..554f02c69ac2 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -126,7 +126,6 @@ struct module { int has_cleanup; struct buffer dev_table_buf; char srcversion[25]; - int is_dot_o; // Missing namespace dependencies struct namespace_list *missing_namespaces; // Actual imported namespaces From patchwork Sun May 17 09:48:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554051 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6F922618 for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 50C0A20671 for ; Sun, 17 May 2020 09:50:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709052; bh=KhEIX8yo/Mpu1QHpQ6AVouKAtv3z6yXhaq7UlU5G1Ak=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=WwBrT/HUhrcEoBI/aJUYnZEcP4/VU0XlTPq12wTvcJ36FY4M2/b0F+u8Bl9Yivxu5 0jUHJdygapge2IzO9BjnvZn0JVAYlIKg1hqWGlj/MhNR7TwpWkWoutgk9BSeAsjrn2 vGBaHI0EIejoN/fvzJEueeLIy3m1rPwwdpGht7UU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727785AbgEQJuv (ORCPT ); Sun, 17 May 2020 05:50:51 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38322 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727799AbgEQJtf (ORCPT ); Sun, 17 May 2020 05:49:35 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LK018560; Sun, 17 May 2020 18:49:19 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LK018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708959; bh=M97z8EcrdRWGYlP6dTlx82Y9X0OH6scYxk7pz69nOrM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OJcW81vEXOOnLryakoDsuVCa0q78F8OW3PGQFKQ04956iTKgXWDNrAA6FhyOOTZyI H+BfsiKZfF/zImS7gQngDcosK26FYB010BV2cqRoTlTXFKe59YjvawlOHSy1jK9ELl tegCdnv2/9PSP3zsWOZpcxX2bRBIabkkxV+7VfCICqdnYZRDGJgJFWV55c7q/eyhZY 0r5H57iUQxPiLsGbRTvnPX/QOOxIRZaqjLII/EDI0dCQGPaVfppxfTz7p+uEC64fC7 Zldi8Gxwye7ELYjvUaioIlAVEr9/GVCdkPehHUSbjnLTYobyWk6QdcN2qTFv9BlzW4 tMbIXBsP0OhDQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 23/29] modpost: remove is_vmlinux() call in check_for_{gpl_usage,unused}() Date: Sun, 17 May 2020 18:48:53 +0900 Message-Id: <20200517094859.2376211-24-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org check_exports() is never called for vmlinux because mod->skip is set for vmlinux. Hence, check_for_gpl_usage() and check_for_unused() are not called for vmlinux, either. is_vmlinux() is always false here. Remove the is_vmlinux() calls, and hard-code the ".ko" suffix. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 7136bfc8f46a..4155669a92bd 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2134,20 +2134,18 @@ void buf_write(struct buffer *buf, const char *s, int len) static void check_for_gpl_usage(enum export exp, const char *m, const char *s) { - const char *e = is_vmlinux(m) ?"":".ko"; - switch (exp) { case export_gpl: - fatal("GPL-incompatible module %s%s " - "uses GPL-only symbol '%s'\n", m, e, s); + fatal("GPL-incompatible module %s.ko uses GPL-only symbol '%s'\n", + m, s); break; case export_unused_gpl: - fatal("GPL-incompatible module %s%s " - "uses GPL-only symbol marked UNUSED '%s'\n", m, e, s); + fatal("GPL-incompatible module %s.ko uses GPL-only symbol marked UNUSED '%s'\n", + m, s); break; case export_gpl_future: - warn("GPL-incompatible module %s%s " - "uses future GPL-only symbol '%s'\n", m, e, s); + warn("GPL-incompatible module %s.ko uses future GPL-only symbol '%s'\n", + m, s); break; case export_plain: case export_unused: @@ -2159,13 +2157,11 @@ static void check_for_gpl_usage(enum export exp, const char *m, const char *s) static void check_for_unused(enum export exp, const char *m, const char *s) { - const char *e = is_vmlinux(m) ?"":".ko"; - switch (exp) { case export_unused: case export_unused_gpl: - warn("module %s%s " - "uses symbol '%s' marked UNUSED\n", m, e, s); + warn("module %s.ko uses symbol '%s' marked UNUSED\n", + m, s); break; default: /* ignore */ From patchwork Sun May 17 09:48:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554031 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7DA3214B7 for ; Sun, 17 May 2020 09:50:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6668320735 for ; Sun, 17 May 2020 09:50:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709021; bh=YiI/+QcoX6kGt2EAPh+B5lk5WcWYLkMLm21tURRMwjI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=kbYroPNwFmiA278sGloC6jy7iUyEHQKL9IAMiIJVyMrMZXcfcq1Zb0zGU3Ym1cSNS /xgySOlGHcBXVqx0YsyHj9inXvZCfUb7dRtNlPWD+8hj0dkMDk/gTm+YESfmb6nBfO lB/DVnFpkZK09/jALfyMEGkXod46t6mreUACdJts= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727992AbgEQJuA (ORCPT ); Sun, 17 May 2020 05:50:00 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38340 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727825AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LL018560; Sun, 17 May 2020 18:49:19 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LL018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708960; bh=+Ps6TRq8xODSNqD/psT6gHTGOvLLt38km45fSAJiiCc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CrSJNg+MszysK2CgTvk+Y6Il0lLBME72WkYGlKcKkeQ9KqhoF2nQVRz8mZZcWS1Df wSVuXKHNe+P7AetP6k7QjR8+zqDOt+FPvLMNr4hcg0r+dT6RYYcLWfpQN8teFD35fO A1iFEOq1XoJAsJHiuk8KW5oW63b85AHeJBBfwI5xNOv7H9ZOmxs6LnXwHdYWOVCyE9 wak8Mp58THpLhwJaKGfHXwawoYii/W/pYai+z1ryqVeDtxRX2kYL0PYTbdVb4qPxcX uYYm//sc1VBDcy2WHfASU23hecxlxoefzB6pUwE7A29F8IaZyCHctToO1+C5zF/z5m M8/X8AqqL3b4A== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 24/29] modpost: add mod->is_vmlinux struct member Date: Sun, 17 May 2020 18:48:54 +0900 Message-Id: <20200517094859.2376211-25-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org is_vmlinux() is called in several places to check whether the current module is vmlinux or not. It is faster and clearer to check mod->is_vmlinux flag. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 19 ++++++++++--------- scripts/mod/modpost.h | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 4155669a92bd..0df0fc82412d 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -176,6 +176,7 @@ static struct module *new_module(const char *modname) /* add to list */ mod->name = p; + mod->is_vmlinux = is_vmlinux(modname); mod->gpl_compatible = -1; mod->next = modules; modules = mod; @@ -417,11 +418,11 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod, if (!s) { s = new_symbol(name, mod, export); - } else if (!external_module || is_vmlinux(s->module->name) || + } else if (!external_module || s->module->is_vmlinux || s->module == mod) { warn("%s: '%s' exported twice. Previous export was in %s%s\n", mod->name, name, s->module->name, - is_vmlinux(s->module->name) ? "" : ".ko"); + s->module->is_vmlinux ? "" : ".ko"); return s; } @@ -678,7 +679,7 @@ static void handle_modversion(const struct module *mod, if (sym->st_shndx == SHN_UNDEF) { warn("EXPORT symbol \"%s\" [%s%s] version generation failed, symbol will not be versioned.\n", - symname, mod->name, is_vmlinux(mod->name) ? "":".ko"); + symname, mod->name, mod->is_vmlinux ? "" : ".ko"); return; } @@ -2001,12 +2002,12 @@ static void read_symbols(const char *modname) mod = new_module(modname); - if (is_vmlinux(modname)) { + if (mod->is_vmlinux) { have_vmlinux = 1; mod->skip = 1; } - if (!is_vmlinux(modname)) { + if (!mod->is_vmlinux) { license = get_modinfo(&info, "license"); if (!license) warn("missing MODULE_LICENSE() in %s\n", modname); @@ -2065,7 +2066,7 @@ static void read_symbols(const char *modname) check_sec_ref(mod, modname, &info); - if (!is_vmlinux(modname)) { + if (!mod->is_vmlinux) { version = get_modinfo(&info, "version"); if (version || all_versions) get_src_version(modname, mod->srcversion, @@ -2335,7 +2336,7 @@ static void add_depends(struct buffer *b, struct module *mod) /* Clear ->seen flag of modules that own symbols needed by this. */ for (s = mod->unres; s; s = s->next) if (s->module) - s->module->seen = is_vmlinux(s->module->name); + s->module->seen = s->module->is_vmlinux; buf_printf(b, "\n"); buf_printf(b, "MODULE_INFO(depends, \""); @@ -2452,9 +2453,9 @@ static void read_dump(const char *fname) goto fail; mod = find_module(modname); if (!mod) { - if (is_vmlinux(modname)) - have_vmlinux = 1; mod = new_module(modname); + if (mod->is_vmlinux) + have_vmlinux = 1; mod->skip = 1; mod->from_dump = 1; } diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index 554f02c69ac2..ec717ab20b98 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -120,6 +120,7 @@ struct module { int gpl_compatible; struct symbol *unres; int from_dump; /* 1 if module was loaded from *.symver */ + int is_vmlinux; int seen; int skip; int has_init; From patchwork Sun May 17 09:48:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554027 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 147D9618 for ; Sun, 17 May 2020 09:50:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F14FB20735 for ; Sun, 17 May 2020 09:50:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709020; bh=T7iXIlAs/TnJfYO0r+JzEPVmeMk01rhlsFpuESFfklI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=nuqiLditbc3yJJ+rFz64TBSZ94KXVQSg/mjDerZZWKwbOjhmZNE9HilhfyEyNnmwC TqqDtd3MOpqEKT1CMDf02dwmT/oRiush5gLtxEXJ2+fI7TbWAkcr3joNrmr4+5ug/p wFWUJdF6uXLLdVTefPqfWj75wpqWHv8t15aQ5f3M= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728003AbgEQJuA (ORCPT ); Sun, 17 May 2020 05:50:00 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38325 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727803AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LM018560; Sun, 17 May 2020 18:49:20 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LM018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708960; bh=niCXP4hsFSz1dax+0Qo5Bdaqc9rQ7pMZAEAIZP/zoac=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XrOTALJJXXNAjCUMmY6IBx0vQuAxdLdI9bwJZJyULr18mu/6sC66RGrBwPkkuFco+ 98pbAwLMYO9rUPH5YrMMJysRBaYcjgNx93VMoVricRl2uyBDw8skzwT8xenWqtwhlV bmtbLTyn5xR1/A8HrmxwuJ8bUofUaQIUguz9nb7uQ0HMSSY4BIc+djANcVm1VrvXCB warEaUUaOO+eOi4Kftnvk5K2EYEsWfwyWxy67GtyuRtgUbBsRaGzBZ2iqGRzX2e/Ai UZE9jFMqpX918sZcCzWeSO/jEDiKWQllpN/+AHR00pcT21GBO/yv+5rQKK/TtTsti3 OuH2xrREJr6NQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 25/29] modpost: remove mod->skip struct member Date: Sun, 17 May 2020 18:48:55 +0900 Message-Id: <20200517094859.2376211-26-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org The meaning of 'skip' is obscure since it does not explain "what to skip". mod->skip is set when it is vmlinux or the module info came from a dump file. So, mod->skip is equivalent to (mod->is_vmlinux || mod->from_dump). For the check in write_namespace_deps_files(), mod->is_vmlinux is unneeded because the -d option is not passed in the first pass of modpost. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 9 +++------ scripts/mod/modpost.h | 1 - 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 0df0fc82412d..003b6fb2303c 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2002,10 +2002,8 @@ static void read_symbols(const char *modname) mod = new_module(modname); - if (mod->is_vmlinux) { + if (mod->is_vmlinux) have_vmlinux = 1; - mod->skip = 1; - } if (!mod->is_vmlinux) { license = get_modinfo(&info, "license"); @@ -2456,7 +2454,6 @@ static void read_dump(const char *fname) mod = new_module(modname); if (mod->is_vmlinux) have_vmlinux = 1; - mod->skip = 1; mod->from_dump = 1; } s = sym_add_exported(symname, mod, export_no(export)); @@ -2517,7 +2514,7 @@ static void write_namespace_deps_files(const char *fname) for (mod = modules; mod; mod = mod->next) { - if (mod->skip || !mod->missing_namespaces) + if (mod->from_dump || !mod->missing_namespaces) continue; buf_printf(&ns_deps_buf, "%s.ko:", mod->name); @@ -2622,7 +2619,7 @@ int main(int argc, char **argv) for (mod = modules; mod; mod = mod->next) { char fname[PATH_MAX]; - if (mod->skip) + if (mod->is_vmlinux || mod->from_dump) continue; buf.pos = 0; diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index ec717ab20b98..264c0c51defa 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -122,7 +122,6 @@ struct module { int from_dump; /* 1 if module was loaded from *.symver */ int is_vmlinux; int seen; - int skip; int has_init; int has_cleanup; struct buffer dev_table_buf; From patchwork Sun May 17 09:48:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554029 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6114E138A for ; Sun, 17 May 2020 09:50:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 49AA520735 for ; Sun, 17 May 2020 09:50:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709021; bh=WSqI9C17o1eYhr03bSD3XtOXp/cPit6HusQUS19p9Zs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=N2Dcgn9nIvWFU//E7918kTQcYgn8e47uib+BfTeNv+A7sZ50HKSc3VjHpQpR1/MBB kNdK4B8h4mQd8JQYMIQUIpGygUg5aT5XWJcdYvAYE9BkJEKR9YxhTX6nhq0RXg+iWf gfW74aPtwr/uZXQMSepiTxS5guBU23zqq/ygJgBU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727998AbgEQJuA (ORCPT ); Sun, 17 May 2020 05:50:00 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:38330 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727817AbgEQJtg (ORCPT ); Sun, 17 May 2020 05:49:36 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LN018560; Sun, 17 May 2020 18:49:21 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LN018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708961; bh=kFCU8CeJzGszKuYilLgB6VOA9Ky2gxvI3bq8b+WwfgQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uNb+5DbNXE36Tga51Q7Ot/clwKzq8bRPWzqorAzWrKKw8vSzjLzOYv5L2LuVGU1qJ 03VJchRkzwafW7wlZRC0wqV/6Hm6CGuOCGOSytLu+cuk0i0rAMgHf5B4t83Ycufv5Q ocA4UDcZ6OQUed8y0mMyLGmE9b3w5WzslC3r/UMvK5Sa1KJWI05H2w1Nre5qXb4wA9 f2xVW8YHtydpplR/OmCEKe+bm69pAOk7MEIKCSwSqaoLSX/2jRQrafBDFPsLFuS4tX JIxpkwFW6UL7Vr1RK+uu77rqBh8BWNrts8Xxb/ehvLlOF5G6gje3WWOPQ3FCiRQuDc 6ceoZdVPkXAeA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 26/29] modpost: set have_vmlinux in new_module() Date: Sun, 17 May 2020 18:48:56 +0900 Message-Id: <20200517094859.2376211-27-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Set have_vmlinux flag in a single place. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 003b6fb2303c..79622939a6c7 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -181,6 +181,9 @@ static struct module *new_module(const char *modname) mod->next = modules; modules = mod; + if (mod->is_vmlinux) + have_vmlinux = 1; + return mod; } @@ -2002,9 +2005,6 @@ static void read_symbols(const char *modname) mod = new_module(modname); - if (mod->is_vmlinux) - have_vmlinux = 1; - if (!mod->is_vmlinux) { license = get_modinfo(&info, "license"); if (!license) @@ -2452,8 +2452,6 @@ static void read_dump(const char *fname) mod = find_module(modname); if (!mod) { mod = new_module(modname); - if (mod->is_vmlinux) - have_vmlinux = 1; mod->from_dump = 1; } s = sym_add_exported(symname, mod, export_no(export)); From patchwork Sun May 17 09:48:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554021 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 76B71618 for ; Sun, 17 May 2020 09:50:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5F4332065F for ; Sun, 17 May 2020 09:50:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709004; bh=SzIUaDdHOIotg6Sw3iBZlx24XOxSw9GW5Pi65maoJeo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=qS6pjF/fzlNfwTJJaIqlflQMnFBXhVsDVh9q9lRzE0PZej5asITp+ApM/dkiMTn/M fKbFSVnBC8Ug3fcC5p7By0nMtcrE33YO+chvQ4/xnrJUu1xrQ4tn0pSqSTa8osigwj EUIBEGdyrQsQaKXYqvOR16SJ25fhaUJ4AAwURq5o= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728032AbgEQJuD (ORCPT ); Sun, 17 May 2020 05:50:03 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:39048 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727825AbgEQJuC (ORCPT ); Sun, 17 May 2020 05:50:02 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LO018560; Sun, 17 May 2020 18:49:21 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LO018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708962; bh=pWTMVkeEgPCgFu1Z1gi1k7k4Qcp0RYRNIC0asNdVtuE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z7XUEQfDK5rJ6eW5C6Qu58nZnpYxQHKn3TqONzv4ogNLmyFzH9psbaS3SFn91EgCE v2LziWdjC8DbA0NtD9E01f6SYsjdHAhuLthpvsbkWfRYBc/sDk9RNdLTNBOjVxyeZt GhyOwSNffUM7VN6xuiQ8EzjcNtYy4TMNdM6Hwi8uHsZe1Jjwp9c+Nxs4lirOcI+Llj gVFCq1C/zOt3SIaCZS+k1KZ1jVhzdxisJEIOgDw9jgx8TOuSNjpiObZuOvx+iSaiFB V+irvnJFSLaNcA0x8nZR+hD7ghicdiIn9Eo076y/g6b/lGOAWFzHB+cYEAZThJPq40 srhlwE6smCRZA== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 27/29] modpost: strip .o from modname before calling new_module() Date: Sun, 17 May 2020 18:48:57 +0900 Message-Id: <20200517094859.2376211-28-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org new_module() conditionally strips the .o because the modname has .o suffix when it is called from read_symbols(), but no .o when it is called from read_dump(). It is clearer to strip .o in read_symbols(). I also used flexible-array for mod->name. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 20 +++++++++++--------- scripts/mod/modpost.h | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 79622939a6c7..6669b3ace968 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -164,18 +164,12 @@ static struct module *find_module(const char *modname) static struct module *new_module(const char *modname) { struct module *mod; - char *p; - mod = NOFAIL(malloc(sizeof(*mod))); + mod = NOFAIL(malloc(sizeof(*mod) + strlen(modname) + 1)); memset(mod, 0, sizeof(*mod)); - p = NOFAIL(strdup(modname)); - - /* strip trailing .o */ - if (strends(p, ".o")) - p[strlen(p) - 2] = '\0'; /* add to list */ - mod->name = p; + strcpy(mod->name, modname); mod->is_vmlinux = is_vmlinux(modname); mod->gpl_compatible = -1; mod->next = modules; @@ -2003,7 +1997,15 @@ static void read_symbols(const char *modname) if (!parse_elf(&info, modname)) return; - mod = new_module(modname); + { + char *tmp; + + /* strip trailing .o */ + tmp = NOFAIL(strdup(modname)); + tmp[strlen(tmp) - 2] = '\0'; + mod = new_module(tmp); + free(tmp); + } if (!mod->is_vmlinux) { license = get_modinfo(&info, "license"); diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index 264c0c51defa..1df87d204c9a 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -116,7 +116,6 @@ struct namespace_list { struct module { struct module *next; - const char *name; int gpl_compatible; struct symbol *unres; int from_dump; /* 1 if module was loaded from *.symver */ @@ -130,6 +129,7 @@ struct module { struct namespace_list *missing_namespaces; // Actual imported namespaces struct namespace_list *imported_namespaces; + char name[]; }; struct elf_info { From patchwork Sun May 17 09:48:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554025 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E567C618 for ; Sun, 17 May 2020 09:50:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CD61520727 for ; Sun, 17 May 2020 09:50:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709018; bh=69IfyMxmqLWw1M1ODAJ3vLhgv97DFdamqW/cj2cJ6Es=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=bP5r5AdMgRJqJrsXdrtzOYQM0C4o9VXfgnQm90f2Qo7GCR1yPIvMSrMUdylYvgGp4 w34v82Fx0R+h8HQMaLPtKPN2jDFei6x1aVP1KdgE6yjdpDyAIfW1zCmYa6fs4IGTgx H9esU9bnr40i96p07PR4Gq0S1zntn5LDS9clq1w0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728025AbgEQJuP (ORCPT ); Sun, 17 May 2020 05:50:15 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:39055 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728015AbgEQJuC (ORCPT ); Sun, 17 May 2020 05:50:02 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LP018560; Sun, 17 May 2020 18:49:22 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LP018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708962; bh=d4uuccwg4a1AZnetOeClGOO3V+MmtQaBZS3DQjl2oq0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Obe1PHqjQe7nvWTOAB1LGaVXbXr0CJU6ACHRLxqQkK04vMZGFJRX+xLUnyIWbUDmL F3iB9euXSfYo38EGqT7WohE6IjJ3d2hKDD1wRf300aiC8M4eeseGBslyVN45rqu/yl 1ig4hoL3IbpV83qB5WYNXTQ1BOyjuZN6n7ioJUWMOUNm7aye0H9V3oph4Yg+Rz7QAZ FIyhkZXTyhI1cc378FwiBOm+8B0QPedGOQISp3MNDtRUlkmFAdqoOb6DhZqtZVP0lQ XDEuSU/vaPzuWuC0rdr/HazQTcMLiGB7NC0NuvRBBmzyWNnf3x8NRYHNttl3DoOEag ZplneFZ9UBY4g== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 28/29] modpost: remove is_vmlinux() helper Date: Sun, 17 May 2020 18:48:58 +0900 Message-Id: <20200517094859.2376211-29-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Now that is_vmlinux() is called only in new_module(), we can inline the function call. modname is the basename with '.o' is stripped. No need to compare it with 'vmlinux.o'. vmlinux is always located at the current working directory. No need to strip the directory path. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 6669b3ace968..bcab010f09ce 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -90,20 +90,6 @@ static inline bool strends(const char *str, const char *postfix) return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0; } -static int is_vmlinux(const char *modname) -{ - const char *myname; - - myname = strrchr(modname, '/'); - if (myname) - myname++; - else - myname = modname; - - return (strcmp(myname, "vmlinux") == 0) || - (strcmp(myname, "vmlinux.o") == 0); -} - void *do_nofail(void *ptr, const char *expr) { if (!ptr) @@ -170,7 +156,7 @@ static struct module *new_module(const char *modname) /* add to list */ strcpy(mod->name, modname); - mod->is_vmlinux = is_vmlinux(modname); + mod->is_vmlinux = (strcmp(modname, "vmlinux") == 0); mod->gpl_compatible = -1; mod->next = modules; modules = mod; From patchwork Sun May 17 09:48:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 11554023 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 761D8618 for ; Sun, 17 May 2020 09:50:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5CA87207EA for ; Sun, 17 May 2020 09:50:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589709009; bh=5Arsw9ji87qWJ9QhwuJDzi+Cc/04L/PACsqbz0n1b88=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=mwdt8fRW4YD3Se0YLZ4x8U9sfhzmAA9w+7Tn18IDlCpCYnxiBQhlqw2CPYkMfKsKR kQi3COeu1YzGFiDFLTbQ/H5JENjdCPyZyQBXSHE+P41SD9A3asItW+KOY8W9kPLmtB D1p65Rdd1A/R7uZVoyzsINBWSSgp57GVfCiojR7s= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728045AbgEQJuH (ORCPT ); Sun, 17 May 2020 05:50:07 -0400 Received: from conuserg-08.nifty.com ([210.131.2.75]:39071 "EHLO conuserg-08.nifty.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728025AbgEQJuD (ORCPT ); Sun, 17 May 2020 05:50:03 -0400 Received: from oscar.flets-west.jp (softbank126090202047.bbtec.net [126.90.202.47]) (authenticated) by conuserg-08.nifty.com with ESMTP id 04H9n4LQ018560; Sun, 17 May 2020 18:49:22 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-08.nifty.com 04H9n4LQ018560 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1589708963; bh=5Y7bJ/6MkN+CtsMEOzco5kPsAEOrX1KqgnDGk0cK6hI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zCWZ7fns2i1QAXekcc79EAHeUq+7aO9Hzm/wRVwhVHSY9ekIBZLdxYjfRhdLovTP8 kAZcB5t6za/PY87PWCg4WCFbb6hENEufRFxSZMfnf4/18LZuN9n2LFIELAIaYczvpP C93bJ/Pzx1xXtiVfDj4ErbPlhUNslSK0d+sEU0wEu6UcHzA432lkFRwIefOk/cZ13O Dr4bHwWqR6O6ustj5nA4MOIbFDzZIzGBDhgZ1J05tt0jE7+OBW+WtpmeZDhDUjMLRF Z+mSv9t4fJnEWRN3JjQE/ONp9L1pJndkJ92/ev27+fMSbqKdsj129DQ+FQ2QJ44zqC mU4ZDpxktdHqQ== X-Nifty-SrcIP: [126.90.202.47] From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Jessica Yu , Masahiro Yamada , Michal Marek , linux-kernel@vger.kernel.org Subject: [PATCH 29/29] modpost: change elf_info->size to size_t Date: Sun, 17 May 2020 18:48:59 +0900 Message-Id: <20200517094859.2376211-30-masahiroy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200517094859.2376211-1-masahiroy@kernel.org> References: <20200517094859.2376211-1-masahiroy@kernel.org> MIME-Version: 1.0 Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org Align with the mmap / munmap APIs. Signed-off-by: Masahiro Yamada --- scripts/mod/modpost.c | 9 ++++----- scripts/mod/modpost.h | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index bcab010f09ce..af5c55d96df3 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -429,7 +429,7 @@ static void sym_set_crc(const char *name, unsigned int crc) s->crc_valid = 1; } -static void *grab_file(const char *filename, unsigned long *size) +static void *grab_file(const char *filename, size_t *size) { struct stat st; void *map = MAP_FAILED; @@ -451,7 +451,7 @@ static void *grab_file(const char *filename, unsigned long *size) return map; } -static void release_file(void *file, unsigned long size) +static void release_file(void *file, size_t size) { munmap(file, size); } @@ -507,9 +507,8 @@ static int parse_elf(struct elf_info *info, const char *filename) /* Check if file offset is correct */ if (hdr->e_shoff > info->size) { - fatal("section header offset=%lu in file '%s' is bigger than " - "filesize=%lu\n", (unsigned long)hdr->e_shoff, - filename, info->size); + fatal("section header offset=%lu in file '%s' is bigger than filesize=%zu\n", + (unsigned long)hdr->e_shoff, filename, info->size); return 0; } diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h index 1df87d204c9a..efb74dba19e2 100644 --- a/scripts/mod/modpost.h +++ b/scripts/mod/modpost.h @@ -133,7 +133,7 @@ struct module { }; struct elf_info { - unsigned long size; + size_t size; Elf_Ehdr *hdr; Elf_Shdr *sechdrs; Elf_Sym *symtab_start;