linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Masahiro Yamada <masahiroy@kernel.org>,
	Sami Tolvanen <samitolvanen@google.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-kbuild@vger.kernel.org
Subject: [PATCH AUTOSEL 5.9 22/23] kbuild: avoid split lines in .mod files
Date: Sat, 12 Dec 2020 11:08:03 -0500	[thread overview]
Message-ID: <20201212160804.2334982-22-sashal@kernel.org> (raw)
In-Reply-To: <20201212160804.2334982-1-sashal@kernel.org>

From: Masahiro Yamada <masahiroy@kernel.org>

[ Upstream commit 7d32358be8acb119dcfe39b6cf67ec6d94bf1fe7 ]

"xargs echo" is not a safe way to remove line breaks because the input
may exceed the command line limit and xargs may break it up into
multiple invocations of echo. This should never happen because
scripts/gen_autoksyms.sh expects all undefined symbols are placed in
the second line of .mod files.

One possible way is to replace "xargs echo" with
"sed ':x;N;$!bx;s/\n/ /g'" or something, but I rewrote the code by
using awk because it is more readable.

This issue was reported by Sami Tolvanen; in his Clang LTO patch set,
$(multi-used-m) is no longer an ELF object, but a thin archive that
contains LLVM bitcode files. llvm-nm prints out symbols for each
archive member separately, which results a lot of dupications, in some
places, beyond the system-defined limit.

This problem must be fixed irrespective of LTO, and we must ensure
zero possibility of having this issue.

Link: https://lkml.org/lkml/2020/12/1/1658
Reported-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 scripts/Makefile.build | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index a467b93234424..80953d5cce80f 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -252,6 +252,9 @@ objtool_dep = $(objtool_obj)					\
 ifdef CONFIG_TRIM_UNUSED_KSYMS
 cmd_gen_ksymdeps = \
 	$(CONFIG_SHELL) $(srctree)/scripts/gen_ksymdeps.sh $@ >> $(dot-target).cmd
+
+# List module undefined symbols
+undefined_syms = $(NM) $< | $(AWK) '$$1 == "U" { printf("%s%s", x++ ? " " : "", $$2) }';
 endif
 
 define rule_cc_o_c
@@ -271,13 +274,6 @@ define rule_as_o_S
 	$(call cmd,modversions_S)
 endef
 
-# List module undefined symbols (or empty line if not enabled)
-ifdef CONFIG_TRIM_UNUSED_KSYMS
-cmd_undef_syms = $(NM) $< | sed -n 's/^  *U //p' | xargs echo
-else
-cmd_undef_syms = echo
-endif
-
 # Built-in and composite module parts
 $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE
 	$(call if_changed_rule,cc_o_c)
@@ -285,7 +281,7 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE
 
 cmd_mod = { \
 	echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \
-	$(cmd_undef_syms); \
+	$(undefined_syms) echo; \
 	} > $@
 
 $(obj)/%.mod: $(obj)/%.o FORCE
-- 
2.27.0


  parent reply	other threads:[~2020-12-12 16:16 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-12 16:07 [PATCH AUTOSEL 5.9 01/23] drm/tegra: sor: Don't warn on probe deferral Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 02/23] drm/tegra: sor: Ensure regulators are disabled on teardown Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 03/23] drm/tegra: replace idr_init() by idr_init_base() Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 04/23] dm integrity: don't use drivers that have CRYPTO_ALG_ALLOCATES_MEMORY Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 05/23] gfs2: set lockdep subclass for iopen glocks Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 06/23] ASoC: rt5682: change SAR voltage threshold Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 07/23] kernel/cpu: add arch override for clear_tasks_mm_cpumask() mm handling Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 08/23] drm/tegra: sor: Disable clocks on error in tegra_sor_init() Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 09/23] selftests: tc-testing: enable CONFIG_NET_SCH_RED as a module Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 10/23] habanalabs: free host huge va_range if not used Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 11/23] habanalabs: put devices before driver removal Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 12/23] arm64: syscall: exit userspace before unmasking exceptions Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 13/23] vxlan: Add needed_headroom for lower device Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 14/23] vxlan: Copy needed_tailroom from lowerdev Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 15/23] scsi: storvsc: Validate length of incoming packet in storvsc_on_channel_callback() Sasha Levin
2020-12-12 18:09   ` Andrea Parri
2020-12-13 14:05     ` Sasha Levin
2020-12-14 11:07     ` Dan Carpenter
2020-12-14 13:06       ` Konstantin Ryabitsev
2020-12-14 18:29         ` Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 16/23] scsi: mpt3sas: Increase IOCInit request timeout to 30s Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 17/23] dm table: Remove BUG_ON(in_interrupt()) Sasha Levin
2020-12-12 16:07 ` [PATCH AUTOSEL 5.9 18/23] iwlwifi: pcie: add one missing entry for AX210 Sasha Levin
2020-12-12 16:08 ` [PATCH AUTOSEL 5.9 19/23] iwlwifi: pcie: add some missing entries " Sasha Levin
2020-12-12 16:08 ` [PATCH AUTOSEL 5.9 20/23] drm/amd/display: Init clock value by current vbios CLKs Sasha Levin
2020-12-12 16:08 ` [PATCH AUTOSEL 5.9 21/23] perf/x86/intel: Check PEBS status correctly Sasha Levin
2020-12-12 16:08 ` Sasha Levin [this message]
2020-12-12 16:08 ` [PATCH AUTOSEL 5.9 23/23] tools/testing/selftests/vm: fix build error Sasha Levin

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=20201212160804.2334982-22-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=samitolvanen@google.com \
    --cc=stable@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).