* [PATCHv6 0/4] Salted build ids via ELF notes
@ 2018-07-06 0:49 Laura Abbott
2018-07-06 0:49 ` [PATCHv6 1/4] kbuild: Add build salt to the kernel and modules Laura Abbott
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Laura Abbott @ 2018-07-06 0:49 UTC (permalink / raw)
To: Andy Lutomirski, mjw, H . J . Lu, Masahiro Yamada,
Michael Ellerman, Catalin Marinas, Will Deacon
Cc: Laura Abbott, Linus Torvalds, X86 ML, linux-kernel, Nick Clifton,
Cary Coutant, linux-kbuild, linuxppc-dev, linux-arm-kernel
Hi,
This is v6 of the series to allow unique build ids. v6 is mostly minor
fixups and Acks for this to go through the kbuild tree.
Thanks,
Laura
Laura Abbott (4):
kbuild: Add build salt to the kernel and modules
x86: Add build salt to the vDSO
powerpc: Add build salt to the vDSO
arm64: Add build salt to the vDSO
arch/arm64/kernel/vdso/note.S | 3 +++
arch/powerpc/kernel/vdso32/note.S | 3 +++
arch/x86/entry/vdso/vdso-note.S | 3 +++
arch/x86/entry/vdso/vdso32/note.S | 3 +++
include/linux/build-salt.h | 20 ++++++++++++++++++++
init/Kconfig | 9 +++++++++
init/version.c | 3 +++
scripts/mod/modpost.c | 3 +++
8 files changed, 47 insertions(+)
create mode 100644 include/linux/build-salt.h
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv6 1/4] kbuild: Add build salt to the kernel and modules
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
@ 2018-07-06 0:49 ` Laura Abbott
2018-07-06 0:49 ` [PATCHv6 2/4] x86: Add build salt to the vDSO Laura Abbott
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Laura Abbott @ 2018-07-06 0:49 UTC (permalink / raw)
To: Andy Lutomirski, mjw, H . J . Lu, Masahiro Yamada,
Michael Ellerman, Catalin Marinas, Will Deacon
Cc: Laura Abbott, Linus Torvalds, X86 ML, linux-kernel, Nick Clifton,
Cary Coutant, linux-kbuild, linuxppc-dev, linux-arm-kernel
In Fedora, the debug information is packaged separately (foo-debuginfo) and
can be installed separately. There's been a long standing issue where only
one version of a debuginfo info package can be installed at a time. There's
been an effort for Fedora for parallel debuginfo to rectify this problem.
Part of the requirement to allow parallel debuginfo to work is that build ids
are unique between builds. The existing upstream rpm implementation ensures
this by re-calculating the build-id using the version and release as a
seed. This doesn't work 100% for the kernel because of the vDSO which is
its own binary and doesn't get updated when embedded.
Fix this by adding some data in an ELF note for both the kernel and modules.
The data is controlled via a Kconfig option so distributions can set it
to an appropriate value to ensure uniqueness between builds.
Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Laura Abbott <labbott@redhat.com>
---
v6: Added more detail to the commit text about why exactly this feature
is useful. Default string now ""
---
include/linux/build-salt.h | 20 ++++++++++++++++++++
init/Kconfig | 9 +++++++++
init/version.c | 3 +++
scripts/mod/modpost.c | 3 +++
4 files changed, 35 insertions(+)
create mode 100644 include/linux/build-salt.h
diff --git a/include/linux/build-salt.h b/include/linux/build-salt.h
new file mode 100644
index 000000000000..bb007bd05e7a
--- /dev/null
+++ b/include/linux/build-salt.h
@@ -0,0 +1,20 @@
+#ifndef __BUILD_SALT_H
+#define __BUILD_SALT_H
+
+#include <linux/elfnote.h>
+
+#define LINUX_ELFNOTE_BUILD_SALT 0x100
+
+#ifdef __ASSEMBLER__
+
+#define BUILD_SALT \
+ ELFNOTE(Linux, LINUX_ELFNOTE_BUILD_SALT, .asciz CONFIG_BUILD_SALT)
+
+#else
+
+#define BUILD_SALT \
+ ELFNOTE32("Linux", LINUX_ELFNOTE_BUILD_SALT, CONFIG_BUILD_SALT)
+
+#endif
+
+#endif /* __BUILD_SALT_H */
diff --git a/init/Kconfig b/init/Kconfig
index 041f3a022122..d39b31484c52 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -107,6 +107,15 @@ config LOCALVERSION_AUTO
which is done within the script "scripts/setlocalversion".)
+config BUILD_SALT
+ string "Build ID Salt"
+ default ""
+ help
+ The build ID is used to link binaries and their debug info. Setting
+ this option will use the value in the calculation of the build id.
+ This is mostly useful for distributions which want to ensure the
+ build is unique between builds. It's safe to leave the default.
+
config HAVE_KERNEL_GZIP
bool
diff --git a/init/version.c b/init/version.c
index bfb4e3f4955e..ef4012ec4375 100644
--- a/init/version.c
+++ b/init/version.c
@@ -7,6 +7,7 @@
*/
#include <generated/compile.h>
+#include <linux/build-salt.h>
#include <linux/export.h>
#include <linux/uts.h>
#include <linux/utsname.h>
@@ -49,3 +50,5 @@ const char linux_proc_banner[] =
"%s version %s"
" (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
" (" LINUX_COMPILER ") %s\n";
+
+BUILD_SALT;
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 1663fb19343a..dc6d714e4dcb 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -2125,10 +2125,13 @@ static int check_modname_len(struct module *mod)
**/
static void add_header(struct buffer *b, struct module *mod)
{
+ buf_printf(b, "#include <linux/build-salt.h>\n");
buf_printf(b, "#include <linux/module.h>\n");
buf_printf(b, "#include <linux/vermagic.h>\n");
buf_printf(b, "#include <linux/compiler.h>\n");
buf_printf(b, "\n");
+ buf_printf(b, "BUILD_SALT;\n");
+ buf_printf(b, "\n");
buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n");
buf_printf(b, "\n");
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv6 2/4] x86: Add build salt to the vDSO
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
2018-07-06 0:49 ` [PATCHv6 1/4] kbuild: Add build salt to the kernel and modules Laura Abbott
@ 2018-07-06 0:49 ` Laura Abbott
2018-07-06 0:49 ` [PATCHv6 3/4] powerpc: " Laura Abbott
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Laura Abbott @ 2018-07-06 0:49 UTC (permalink / raw)
To: Andy Lutomirski, mjw, H . J . Lu, Masahiro Yamada
Cc: Laura Abbott, Linus Torvalds, X86 ML, linux-kernel, Nick Clifton,
Cary Coutant, linux-kbuild, linuxppc-dev, Michael Ellerman,
Catalin Marinas, Will Deacon, linux-arm-kernel
The vDSO needs to have a unique build id in a similar manner
to the kernel and modules. Use the build salt macro.
Acked-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Laura Abbott <labbott@redhat.com>
---
v6: Ack from Andy
---
arch/x86/entry/vdso/vdso-note.S | 3 +++
arch/x86/entry/vdso/vdso32/note.S | 3 +++
2 files changed, 6 insertions(+)
diff --git a/arch/x86/entry/vdso/vdso-note.S b/arch/x86/entry/vdso/vdso-note.S
index 79a071e4357e..79423170118f 100644
--- a/arch/x86/entry/vdso/vdso-note.S
+++ b/arch/x86/entry/vdso/vdso-note.S
@@ -3,6 +3,7 @@
* Here we can supply some information useful to userland.
*/
+#include <linux/build-salt.h>
#include <linux/uts.h>
#include <linux/version.h>
#include <linux/elfnote.h>
@@ -10,3 +11,5 @@
ELFNOTE_START(Linux, 0, "a")
.long LINUX_VERSION_CODE
ELFNOTE_END
+
+BUILD_SALT
diff --git a/arch/x86/entry/vdso/vdso32/note.S b/arch/x86/entry/vdso/vdso32/note.S
index 9fd51f206314..e78047d119f6 100644
--- a/arch/x86/entry/vdso/vdso32/note.S
+++ b/arch/x86/entry/vdso/vdso32/note.S
@@ -4,6 +4,7 @@
* Here we can supply some information useful to userland.
*/
+#include <linux/build-salt.h>
#include <linux/version.h>
#include <linux/elfnote.h>
@@ -14,6 +15,8 @@ ELFNOTE_START(Linux, 0, "a")
.long LINUX_VERSION_CODE
ELFNOTE_END
+BUILD_SALT
+
#ifdef CONFIG_XEN
/*
* Add a special note telling glibc's dynamic linker a fake hardware
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv6 3/4] powerpc: Add build salt to the vDSO
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
2018-07-06 0:49 ` [PATCHv6 1/4] kbuild: Add build salt to the kernel and modules Laura Abbott
2018-07-06 0:49 ` [PATCHv6 2/4] x86: Add build salt to the vDSO Laura Abbott
@ 2018-07-06 0:49 ` Laura Abbott
2018-07-06 0:49 ` [PATCHv6 4/4] arm64: " Laura Abbott
2018-07-08 22:12 ` [PATCHv6 0/4] Salted build ids via ELF notes Masahiro Yamada
4 siblings, 0 replies; 6+ messages in thread
From: Laura Abbott @ 2018-07-06 0:49 UTC (permalink / raw)
To: mjw, H . J . Lu, Masahiro Yamada, Michael Ellerman
Cc: Laura Abbott, Andy Lutomirski, Linus Torvalds, X86 ML,
linux-kernel, Nick Clifton, Cary Coutant, linux-kbuild,
linuxppc-dev, Catalin Marinas, Will Deacon, linux-arm-kernel
The vDSO needs to have a unique build id in a similar manner
to the kernel and modules. Use the build salt macro.
Signed-off-by: Laura Abbott <labbott@redhat.com>
---
v6: Remove semi-colon
---
arch/powerpc/kernel/vdso32/note.S | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/powerpc/kernel/vdso32/note.S b/arch/powerpc/kernel/vdso32/note.S
index d4b5be4f3d5f..227a7327399e 100644
--- a/arch/powerpc/kernel/vdso32/note.S
+++ b/arch/powerpc/kernel/vdso32/note.S
@@ -5,6 +5,7 @@
#include <linux/uts.h>
#include <linux/version.h>
+#include <linux/build-salt.h>
#define ASM_ELF_NOTE_BEGIN(name, flags, vendor, type) \
.section name, flags; \
@@ -23,3 +24,5 @@
ASM_ELF_NOTE_BEGIN(".note.kernel-version", "a", UTS_SYSNAME, 0)
.long LINUX_VERSION_CODE
ASM_ELF_NOTE_END
+
+BUILD_SALT
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCHv6 4/4] arm64: Add build salt to the vDSO
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
` (2 preceding siblings ...)
2018-07-06 0:49 ` [PATCHv6 3/4] powerpc: " Laura Abbott
@ 2018-07-06 0:49 ` Laura Abbott
2018-07-08 22:12 ` [PATCHv6 0/4] Salted build ids via ELF notes Masahiro Yamada
4 siblings, 0 replies; 6+ messages in thread
From: Laura Abbott @ 2018-07-06 0:49 UTC (permalink / raw)
To: mjw, H . J . Lu, Masahiro Yamada, Catalin Marinas, Will Deacon
Cc: Laura Abbott, Andy Lutomirski, Linus Torvalds, X86 ML,
linux-kernel, Nick Clifton, Cary Coutant, linux-kbuild,
linuxppc-dev, Michael Ellerman, linux-arm-kernel
The vDSO needs to have a unique build id in a similar manner
to the kernel and modules. Use the build salt macro.
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Laura Abbott <labbott@redhat.com>
---
v6: Remove the semi-colon, Ack from Will
---
arch/arm64/kernel/vdso/note.S | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm64/kernel/vdso/note.S b/arch/arm64/kernel/vdso/note.S
index b82c85e5d972..e20483b104d9 100644
--- a/arch/arm64/kernel/vdso/note.S
+++ b/arch/arm64/kernel/vdso/note.S
@@ -22,7 +22,10 @@
#include <linux/uts.h>
#include <linux/version.h>
#include <linux/elfnote.h>
+#include <linux/build-salt.h>
ELFNOTE_START(Linux, 0, "a")
.long LINUX_VERSION_CODE
ELFNOTE_END
+
+BUILD_SALT
--
2.17.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCHv6 0/4] Salted build ids via ELF notes
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
` (3 preceding siblings ...)
2018-07-06 0:49 ` [PATCHv6 4/4] arm64: " Laura Abbott
@ 2018-07-08 22:12 ` Masahiro Yamada
4 siblings, 0 replies; 6+ messages in thread
From: Masahiro Yamada @ 2018-07-08 22:12 UTC (permalink / raw)
To: Laura Abbott
Cc: Andy Lutomirski, Mark Wielaard, H . J . Lu, Michael Ellerman,
Catalin Marinas, Will Deacon, Linus Torvalds, X86 ML,
Linux Kernel Mailing List, Nick Clifton, Cary Coutant,
Linux Kbuild mailing list, linuxppc-dev, linux-arm-kernel
2018-07-06 9:49 GMT+09:00 Laura Abbott <labbott@redhat.com>:
> Hi,
>
> This is v6 of the series to allow unique build ids. v6 is mostly minor
> fixups and Acks for this to go through the kbuild tree.
Applied to linux-kbuild. Thanks!
> Thanks,
> Laura
>
> Laura Abbott (4):
> kbuild: Add build salt to the kernel and modules
> x86: Add build salt to the vDSO
> powerpc: Add build salt to the vDSO
> arm64: Add build salt to the vDSO
>
> arch/arm64/kernel/vdso/note.S | 3 +++
> arch/powerpc/kernel/vdso32/note.S | 3 +++
> arch/x86/entry/vdso/vdso-note.S | 3 +++
> arch/x86/entry/vdso/vdso32/note.S | 3 +++
> include/linux/build-salt.h | 20 ++++++++++++++++++++
> init/Kconfig | 9 +++++++++
> init/version.c | 3 +++
> scripts/mod/modpost.c | 3 +++
> 8 files changed, 47 insertions(+)
> create mode 100644 include/linux/build-salt.h
>
> --
> 2.17.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-07-08 22:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-06 0:49 [PATCHv6 0/4] Salted build ids via ELF notes Laura Abbott
2018-07-06 0:49 ` [PATCHv6 1/4] kbuild: Add build salt to the kernel and modules Laura Abbott
2018-07-06 0:49 ` [PATCHv6 2/4] x86: Add build salt to the vDSO Laura Abbott
2018-07-06 0:49 ` [PATCHv6 3/4] powerpc: " Laura Abbott
2018-07-06 0:49 ` [PATCHv6 4/4] arm64: " Laura Abbott
2018-07-08 22:12 ` [PATCHv6 0/4] Salted build ids via ELF notes Masahiro Yamada
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).