From: Lukas Bulwahn <lukas.bulwahn@gmail.com>
To: linux-kbuild@vger.kernel.org
Cc: lukas.bulwahn@gmail.com, Nicholas Mc Guire <der.herr@hofr.at>,
sil2review@lists.osadl.org, Sam Ravnborg <sam@ravnborg.org>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Michal Marek <michal.lkml@markovi.net>,
linux-kernel@vger.kernel.org
Subject: [PATCH v3] fixdep: exit with error code in error branches of do_config_file()
Date: Mon, 8 Jan 2018 11:04:01 +0100 [thread overview]
Message-ID: <1515405841-2041-1-git-send-email-lukas.bulwahn@gmail.com> (raw)
In-Reply-To: <1513883429-9527-1-git-send-email-lukas.bulwahn@gmail.com>
do_config_file() should exit with an error code on internal run-time
errors, and not return if it fails as then the error in do_config_file()
would go unnoticed in the current code and allow the build to continue.
The exit with error code will make the build fail in those very
exceptional cases. If this occurs, this actually indicates a deeper
problem in the execution of the kernel build process.
Now, in these error cases, we do not explicitly free memory and close
the file handlers in do_config_file(), as this is covered by exit().
This issue in the fixdep script was introduced with its initial
implementation back in 2002 by the original author Kai Germaschewski with
this commit 04bd72170653 ("kbuild: Make dependencies at compile time")
in the linux history git tree, i.e.,
git://git.kernel.org/pub/scm/linux/kernel/git/history/history.git.
This issue was identified during the review of a previous patch that
intended to address a memory leak detected by a static analysis tool.
Link: https://lkml.org/lkml/2017/12/14/736
Suggested-by: Nicholas Mc Guire <der.herr@hofr.at>
Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
---
compile tested on top of next-20180108 with clang and gcc
Changes in v2:
- no code change; only include proper Fixes tag and explain it
Changes in v3:
- Clarify history commit reference and dropped Fixes tag
- Do not error on empty files (reverts one hunk of v2)
scripts/basic/fixdep.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
index bbf62cb..86a61d6 100644
--- a/scripts/basic/fixdep.c
+++ b/scripts/basic/fixdep.c
@@ -290,13 +290,11 @@ static void do_config_file(const char *filename)
map = malloc(st.st_size + 1);
if (!map) {
perror("fixdep: malloc");
- close(fd);
- return;
+ exit(2);
}
if (read(fd, map, st.st_size) != st.st_size) {
perror("fixdep: read");
- close(fd);
- return;
+ exit(2);
}
map[st.st_size] = '\0';
close(fd);
--
2.5.5
next prev parent reply other threads:[~2018-01-08 10:04 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-20 20:27 [PATCH] " Lukas Bulwahn
2017-12-21 15:33 ` Nicholas Mc Guire
2017-12-21 19:10 ` [PATCH v2] " Lukas Bulwahn
2017-12-30 16:51 ` Masahiro Yamada
2017-12-31 15:45 ` Nicholas Mc Guire
2018-01-01 6:41 ` Masahiro Yamada
2018-01-01 9:31 ` Nicholas Mc Guire
2018-01-01 9:55 ` Sam Ravnborg
2018-01-08 10:17 ` Lukas Bulwahn
2018-01-09 8:39 ` Masahiro Yamada
2018-01-08 10:04 ` Lukas Bulwahn [this message]
2018-01-09 8:26 ` [PATCH v3] " Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1515405841-2041-1-git-send-email-lukas.bulwahn@gmail.com \
--to=lukas.bulwahn@gmail.com \
--cc=der.herr@hofr.at \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.lkml@markovi.net \
--cc=sam@ravnborg.org \
--cc=sil2review@lists.osadl.org \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome