Skip to content

Commit

Permalink
fixdep: exit with error code in error branches of do_config_file()
Browse files Browse the repository at this point in the history
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 04bd721 ("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 <[email protected]>
Suggested-by: Masahiro Yamada <[email protected]>
Signed-off-by: Lukas Bulwahn <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
  • Loading branch information
bulwahn authored and masahir0y committed Jan 8, 2018
1 parent ae64f9b commit 7c2ec43
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions scripts/basic/fixdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 7c2ec43

Please sign in to comment.