From 564172e59e9793c4857c3f65d5416f896dd12e77 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 15:16:42 +0100 Subject: [PATCH 01/10] [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) --- debian/changelog | 6 ++++++ debian/config/defines | 1 + 2 files changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 42647e896..bd6d62074 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +linux (4.17.6-2) UNRELEASED; urgency=medium + + * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) + + -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 + linux (4.17.6-1) unstable; urgency=medium * New upstream stable update: diff --git a/debian/config/defines b/debian/config/defines index dd8ca16f3..6fa3f21a0 100644 --- a/debian/config/defines +++ b/debian/config/defines @@ -22,6 +22,7 @@ ignore-changes: module:arch/x86/kvm/* module:drivers/crypto/ccp/* module:drivers/hv/* + module:drivers/gpu/drm/sun4i/* module:drivers/iio/** module:drivers/misc/cxl/* module:drivers/mtd/nand/* From fa7a7325643531a7395133a2555bfcdd77079ab0 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 15:31:04 +0100 Subject: [PATCH 02/10] debian/control: Fix arch/profile qualifications for libelf-dev build-dependency --- debian/changelog | 2 ++ debian/templates/control.source.in | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bd6d62074..59c69490b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) + * debian/control: Fix arch/profile qualifications for libelf-dev + build-dependency -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/templates/control.source.in b/debian/templates/control.source.in index d3069aae9..7a48b2594 100644 --- a/debian/templates/control.source.in +++ b/debian/templates/control.source.in @@ -27,6 +27,9 @@ Build-Depends-Arch: # used by upstream to build signing tools and to process certificates libssl-dev:native , libssl-dev , openssl (>= 1.1.0-1~) , +# used by upstream to build objtool (native for amd64 images; host arch for +# linux-kbuild) and perf (host arch) + libelf-dev:native [amd64] , libelf-dev , # used by upstream to build perf documentation asciidoc-base , xmlto , @@ -37,8 +40,6 @@ Build-Depends-Arch: # - libbabeltrace-ctf-dev may or may not be needed as well libbabeltrace-dev (>= 1.5.3-2~) | libbabeltrace-ctf-dev (>= 1.5.0) , libdw-dev , -# needed for objtool with CONFIG_STACK_VALIDATION=y and CONFIG_UNWINDER_ORC=y - libelf-dev , libiberty-dev , libnewt-dev , libnuma-dev [amd64 arm64 hppa i386 mips mips64 mips64el mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc powerpcspe ppc64 ppc64el sparc x32] , From 1446e940ce5f695e6f977c9cb8c4b2d1f123a2b9 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 17:42:24 +0100 Subject: [PATCH 03/10] debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d --- debian/changelog | 1 + debian/rules.real | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 59c69490b..130cef7a2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) * debian/control: Fix arch/profile qualifications for libelf-dev build-dependency + * debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/rules.real b/debian/rules.real index 200ae026d..692ed70bd 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -581,7 +581,7 @@ install-source: $(BUILD_DIR)/$(SOURCE_BASENAME)-source-$(UPSTREAMVERSION).tar.xz +$(MAKE_SELF) install-base BUILDDEB_ARGS='-Zgzip -z1' define make-tools -+mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(VERSION) ++mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(VERSION) KERNEL_ARCH=$(KERNEL_ARCH) endef $(STAMPS_DIR)/build-tools: From 1ce0efc40538a504f420c41a064aa76337a87849 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 17:49:55 +0100 Subject: [PATCH 04/10] debian/rules.d/tools/perf/Makefile: Use KERNEL_ARCH variable Currently we replicate the mapping of Debian architectures to kernel source architectures here. Use the KERNEL_ARCH variable that is now passed down by rules.real. We still need to check whether perf is supported on the architecture, though. --- debian/changelog | 1 + debian/rules.d/tools/perf/Makefile | 38 +++++++++--------------------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/debian/changelog b/debian/changelog index 130cef7a2..6dfd5a5c1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,7 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * debian/control: Fix arch/profile qualifications for libelf-dev build-dependency * debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d + * debian/rules.d/tools/perf/Makefile: Use KERNEL_ARCH variable -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/rules.d/tools/perf/Makefile b/debian/rules.d/tools/perf/Makefile index 40c331fdd..663de7d29 100644 --- a/debian/rules.d/tools/perf/Makefile +++ b/debian/rules.d/tools/perf/Makefile @@ -2,37 +2,21 @@ include $(top_rulesdir)/Makefile.inc ifeq ($(filter nopython,$(DEB_BUILD_PROFILES)),) -DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) - -ifeq ($(DEB_HOST_ARCH_CPU),alpha) - KERNEL_ARCH_PERF = alpha -else ifeq ($(DEB_HOST_ARCH_CPU),arm) - KERNEL_ARCH_PERF = arm -else ifeq ($(DEB_HOST_ARCH_CPU),arm64) - KERNEL_ARCH_PERF = arm64 -else ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = mips -else ifeq ($(DEB_HOST_ARCH_CPU),hppa) - KERNEL_ARCH_PERF = parisc -else ifneq ($(filter powerpc% ppc%,$(DEB_HOST_ARCH_CPU)),) - # But pure 32-bit toolchains currently don't work +ifneq ($(filter alpha arm arm64 mips parisc s390 sh sparc,$(KERNEL_ARCH)),) +HAVE_PERF := 1 +else ifeq ($(KERNEL_ARCH),powerpc) + # Pure 32-bit toolchains currently don't work ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),powerpcspe) - KERNEL_ARCH_PERF = powerpc + HAVE_PERF := 1 endif -else ifneq ($(filter s390%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = s390 -else ifeq ($(DEB_HOST_ARCH_CPU),sh4) - KERNEL_ARCH_PERF = sh -else ifneq ($(filter sparc%,$(DEB_HOST_ARCH_CPU)),) - KERNEL_ARCH_PERF = sparc -else ifneq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),) - # But x32 isn't supported yet +else ifeq ($(KERNEL_ARCH),x86) + # x32 isn't supported yet ifneq ($(shell dpkg-architecture -qDEB_HOST_ARCH),x32) - KERNEL_ARCH_PERF = x86 + HAVE_PERF := 1 endif endif -MAKE_PERF := $(MAKE) O=$(CURDIR) prefix=/usr V=1 ARCH=$(KERNEL_ARCH_PERF) EXTRA_WARNINGS=-Wno-error EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' +MAKE_PERF := $(MAKE) O=$(CURDIR) prefix=/usr V=1 ARCH=$(KERNEL_ARCH) EXTRA_WARNINGS=-Wno-error EXTRA_CFLAGS='$(CFLAGS) $(CPPFLAGS)' LDFLAGS='$(LDFLAGS)' # Disable Gtk UI until it's more usable MAKE_PERF += NO_GTK2=1 @@ -55,7 +39,7 @@ MAKE_PERF += NO_LIBCRYPTO=1 MAKE_PERF += LIBBABELTRACE=1 all: -ifdef KERNEL_ARCH_PERF +ifdef HAVE_PERF # perf changes some default directories depending on whether DESTDIR is # set. We must define it even when building to avoid a rebuild when we # run 'make install'. @@ -71,7 +55,7 @@ endif endif install: -ifdef KERNEL_ARCH_PERF +ifdef HAVE_PERF +$(MAKE_PERF) -C $(top_srcdir)/tools/perf -f Makefile.perf install VERSION=$(VERSION) # Don't install a 'trace' alias yet: # - We need a wrapper for it anyway, so there's little point adding a From e740d4cf7948fe68edc472cfd54f86a457a6879c Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 17:54:58 +0100 Subject: [PATCH 05/10] linux-kbuild: Fix the assumed host architecture for cross-built objtool The previous fix ensured that objtool was built for the right host architecture, but it was still including some UAPI header files (in particular ) for the build architecture. --- debian/changelog | 2 ++ debian/rules.d/tools/objtool/Makefile | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 6dfd5a5c1..7102aaea3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ linux (4.17.6-2) UNRELEASED; urgency=medium build-dependency * debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d * debian/rules.d/tools/perf/Makefile: Use KERNEL_ARCH variable + * linux-kbuild: Fix the assumed host architecture for cross-built objtool + (fixes FTBFS on at least ppc64) -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/rules.d/tools/objtool/Makefile b/debian/rules.d/tools/objtool/Makefile index cc2ea9e22..6b42618d3 100644 --- a/debian/rules.d/tools/objtool/Makefile +++ b/debian/rules.d/tools/objtool/Makefile @@ -5,7 +5,7 @@ all: # for multiple targets and add a wrapper, same as for modpost. # objtool explicitly sets CC and LD to be native tools; we need to override # this on the command line to make cross-builds work. - $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR) ARCH=x86 CC=$(CC) LD=$(CROSS_COMPILE)ld + $(MAKE) -C $(top_srcdir)/tools/objtool O=$(CURDIR) HOSTARCH=$(KERNEL_ARCH) ARCH=x86 CC=$(CC) LD=$(CROSS_COMPILE)ld install: install -D -m755 objtool $(DESTDIR)/$(installdir)/objtool From c924dd44d91c1ba57231f8f5feb4a88c2096bcbf Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Thu, 12 Jul 2018 18:15:16 +0100 Subject: [PATCH 06/10] [ppc64] linux-bootwrapper: Work around compiler include path quirk (fixes FTBFS) --- debian/changelog | 3 ++- debian/rules.d/arch/powerpc/boot/Makefile | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7102aaea3..87ed82abe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,7 +6,8 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * debian/rules.real: Pass KERNEL_ARCH variable down to debian/rules.d * debian/rules.d/tools/perf/Makefile: Use KERNEL_ARCH variable * linux-kbuild: Fix the assumed host architecture for cross-built objtool - (fixes FTBFS on at least ppc64) + * [ppc64] linux-bootwrapper: Work around compiler include path quirk + (fixes FTBFS) -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/rules.d/arch/powerpc/boot/Makefile b/debian/rules.d/arch/powerpc/boot/Makefile index ab8e9d74f..9dc418f26 100644 --- a/debian/rules.d/arch/powerpc/boot/Makefile +++ b/debian/rules.d/arch/powerpc/boot/Makefile @@ -9,3 +9,10 @@ SCRIPTS = \ include $(top_rulesdir)/Makefile.inc CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 + +# gcc for ppc64 currently seems to be treating -I like -isystem, and +# since arch/powerpc/boot has substitute versions of some standard +# headers for use at boot time, they are also included in these tools. +# In this case there is actually no need to use the -I option, so +# filter it out. +CPPFLAGS := $(filter-out -I%,$(CPPFLAGS)) From 98b1cf0710f4fd613c578e014e62ebaff181ea44 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 13 Jul 2018 00:14:35 +0100 Subject: [PATCH 07/10] Fix file conflicts between debug packages where a vDSO is identical Closes: #872263 - kbuild: Add build salt to the kernel and modules - [arm64,powerpc,x86] Add build salt to the vDSO - Set BUILD_SALT equal to the release string --- debian/changelog | 5 + ...build-salt-to-the-kernel-and-modules.patch | 105 ++++++++++++++++++ .../arm64-add-build-salt-to-the-vdso.patch | 29 +++++ .../powerpc-add-build-salt-to-the-vdso.patch | 31 ++++++ .../x86/x86-add-build-salt-to-the-vdso.patch | 52 +++++++++ debian/patches/series | 4 + debian/rules.real | 7 +- 7 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch create mode 100644 debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch create mode 100644 debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch create mode 100644 debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch diff --git a/debian/changelog b/debian/changelog index 87ed82abe..d0981a94b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,11 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * linux-kbuild: Fix the assumed host architecture for cross-built objtool * [ppc64] linux-bootwrapper: Work around compiler include path quirk (fixes FTBFS) + * Fix file conflicts between debug packages where a vDSO is identical + (Closes: #872263): + - kbuild: Add build salt to the kernel and modules + - [arm64,powerpc,x86] Add build salt to the vDSO + - Set BUILD_SALT equal to the release string -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 diff --git a/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch b/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch new file mode 100644 index 000000000..6e1ca5c91 --- /dev/null +++ b/debian/patches/features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch @@ -0,0 +1,105 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:37 -0700 +Subject: kbuild: Add build salt to the kernel and modules +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=8bc0ab58aca8a96fed7e9a38e21025d1737f4a4f +Bug-Debian: https://bugs.debian.org/872263 + +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 +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + 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 + +--- /dev/null ++++ b/include/linux/build-salt.h +@@ -0,0 +1,20 @@ ++#ifndef __BUILD_SALT_H ++#define __BUILD_SALT_H ++ ++#include ++ ++#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 */ +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -109,6 +109,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 + +--- a/init/version.c ++++ b/init/version.c +@@ -7,6 +7,7 @@ + */ + + #include ++#include + #include + #include + #include +@@ -49,3 +50,5 @@ const char linux_proc_banner[] = + "%s version %s" + " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" + " (" LINUX_COMPILER ") %s\n"; ++ ++BUILD_SALT; +--- a/scripts/mod/modpost.c ++++ b/scripts/mod/modpost.c +@@ -2137,10 +2137,13 @@ static int check_modname_len(struct modu + **/ + static void add_header(struct buffer *b, struct module *mod) + { ++ buf_printf(b, "#include \n"); + buf_printf(b, "#include \n"); + buf_printf(b, "#include \n"); + buf_printf(b, "#include \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"); diff --git a/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch b/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..99e745fd1 --- /dev/null +++ b/debian/patches/features/arm64/arm64-add-build-salt-to-the-vdso.patch @@ -0,0 +1,29 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:40 -0700 +Subject: arm64: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=13351cdf75405e38c1b7bb927624d910d328be2b +Bug-Debian: https://bugs.debian.org/872263 + +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 +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + arch/arm64/kernel/vdso/note.S | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/arm64/kernel/vdso/note.S ++++ b/arch/arm64/kernel/vdso/note.S +@@ -22,7 +22,10 @@ + #include + #include + #include ++#include + + ELFNOTE_START(Linux, 0, "a") + .long LINUX_VERSION_CODE + ELFNOTE_END ++ ++BUILD_SALT diff --git a/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch b/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..1d7c5cd1c --- /dev/null +++ b/debian/patches/features/powerpc/powerpc-add-build-salt-to-the-vdso.patch @@ -0,0 +1,31 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:39 -0700 +Subject: powerpc: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=29f07b97416a95d28ee62e70fd91b44956d3c8ce +Bug-Debian: https://bugs.debian.org/872263 + +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 +Signed-off-by: Masahiro Yamada +--- + arch/powerpc/kernel/vdso32/note.S | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/powerpc/kernel/vdso32/note.S ++++ b/arch/powerpc/kernel/vdso32/note.S +@@ -5,6 +5,7 @@ + + #include + #include ++#include + + #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 diff --git a/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch b/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch new file mode 100644 index 000000000..2284e5e74 --- /dev/null +++ b/debian/patches/features/x86/x86-add-build-salt-to-the-vdso.patch @@ -0,0 +1,52 @@ +From: Laura Abbott +Date: Thu, 5 Jul 2018 17:49:38 -0700 +Subject: x86: Add build salt to the vDSO +Origin: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git/commit?id=fdc3ae38182c7f983f4f8b97c86b753a3c16e269 +Bug-Debian: https://bugs.debian.org/872263 + +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 +Signed-off-by: Laura Abbott +Signed-off-by: Masahiro Yamada +--- + arch/x86/entry/vdso/vdso-note.S | 3 +++ + arch/x86/entry/vdso/vdso32/note.S | 3 +++ + 2 files changed, 6 insertions(+) + +--- 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 + #include + #include + #include +@@ -10,3 +11,5 @@ + ELFNOTE_START(Linux, 0, "a") + .long LINUX_VERSION_CODE + ELFNOTE_END ++ ++BUILD_SALT +--- 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 + #include + #include + +@@ -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 diff --git a/debian/patches/series b/debian/patches/series index db045dd78..02ee750f3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -96,6 +96,10 @@ bugfix/all/i40e-build-for-64-bit-targets-only.patch bugfix/all/ib-fix-rdma_rxe-and-infiniband_rdmavt-dependencies-f.patch # Miscellaneous features +features/all/kbuild-add-build-salt-to-the-kernel-and-modules.patch +features/x86/x86-add-build-salt-to-the-vdso.patch +features/powerpc/powerpc-add-build-salt-to-the-vdso.patch +features/arm64/arm64-add-build-salt-to-the-vdso.patch # Lockdown (formerly 'securelevel') patchset features/all/lockdown/0001-Add-the-ability-to-lock-down-access-to-the-running-k.patch diff --git a/debian/rules.real b/debian/rules.real index 692ed70bd..987aaeddb 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -172,6 +172,8 @@ $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/source_$(FEA rm -rf '$(DIR)' mkdir '$(DIR)' cp '$(CONFIG)' '$(DIR)/.config' +# Add "salt" to fix #872263 + echo 'CONFIG_BUILD_SALT="$(ABINAME)$(LOCALVERSION_IMAGE)"' >> '$(DIR)/.config' echo 'override ARCH = $(KERNEL_ARCH)' >> '$(DIR)/.kernelvariables' echo 'override KERNELRELEASE = $(ABINAME)$(LOCALVERSION_IMAGE)' >> '$(DIR)/.kernelvariables' echo 'CCACHE = ccache' >> '$(DIR)/.kernelvariables' @@ -570,9 +572,10 @@ install-source: $(BUILD_DIR)/$(SOURCE_BASENAME)-source-$(UPSTREAMVERSION).tar.xz dh_installdirs /usr/src/linux-config-$(UPSTREAMVERSION) dh_install $^ /usr/src # Include our kernel config files, but with the module signing -# configuration fixed to work for custom kernels. +# configuration fixed to work for custom kernels. Also delete +# CONFIG_BUILD_SALT which makes no sense for custom kernels. for triplet in $(ALL_TRIPLETS); do \ - sed '/CONFIG_\(MODULE_SIG_\(ALL\|KEY\)\|SYSTEM_TRUSTED_KEYS\)[ =]/d' $(BUILD_DIR)/build_$$triplet/.config | xz -c >debian/$(PACKAGE_NAME)/usr/src/linux-config-$(UPSTREAMVERSION)/config.$$triplet.xz; \ + sed '/CONFIG_\(MODULE_SIG_\(ALL\|KEY\)\|SYSTEM_TRUSTED_KEYS\|BUILD_SALT\)[ =]/d' $(BUILD_DIR)/build_$$triplet/.config | xz -c >debian/$(PACKAGE_NAME)/usr/src/linux-config-$(UPSTREAMVERSION)/config.$$triplet.xz; \ done # We don't want to recompress, but -Znone is not compatible with older # tools and is currently rejected by dak. -Zgzip -z0 (uncompressed From ba1733832fd94334fc88847ee013c3d62be29009 Mon Sep 17 00:00:00 2001 From: Vagrant Cascadian Date: Sun, 15 Jul 2018 13:27:23 -0700 Subject: [PATCH 08/10] [riscv64] Build linux-libc-dev (Closes: #886440). Thanks to Manuel A. Fernandez Montecelo. --- debian/changelog | 5 +++++ debian/config/defines | 1 + debian/config/riscv64/defines | 4 ++++ 3 files changed, 10 insertions(+) create mode 100644 debian/config/riscv64/defines diff --git a/debian/changelog b/debian/changelog index d0981a94b..acb6bf72c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ linux (4.17.6-2) UNRELEASED; urgency=medium + [ Ben Hutchings ] * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) * debian/control: Fix arch/profile qualifications for libelf-dev build-dependency @@ -14,6 +15,10 @@ linux (4.17.6-2) UNRELEASED; urgency=medium - [arm64,powerpc,x86] Add build salt to the vDSO - Set BUILD_SALT equal to the release string + [ Vagrant Cascadian ] + * [riscv64] Build linux-libc-dev (Closes: #886440). + Thanks to Manuel A. Fernandez Montecelo. + -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 linux (4.17.6-1) unstable; urgency=medium diff --git a/debian/config/defines b/debian/config/defines index 6fa3f21a0..2c091d7ca 100644 --- a/debian/config/defines +++ b/debian/config/defines @@ -97,6 +97,7 @@ arches: powerpcspe ppc64 ppc64el + riscv64 s390 s390x sh3 diff --git a/debian/config/riscv64/defines b/debian/config/riscv64/defines new file mode 100644 index 000000000..7d49f44d8 --- /dev/null +++ b/debian/config/riscv64/defines @@ -0,0 +1,4 @@ +[base] +kernel-arch: riscv +featuresets: +# empty; just building headers yet From 29f1a23722330dd6ce355d5b768c0056f0ecbbb4 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 15 Jul 2018 23:45:49 +0100 Subject: [PATCH 09/10] init: Avoid ABI change for build salt --- debian/changelog | 1 + ...init-avoid-abi-change-for-build-salt.patch | 24 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 26 insertions(+) create mode 100644 debian/patches/debian/init-avoid-abi-change-for-build-salt.patch diff --git a/debian/changelog b/debian/changelog index acb6bf72c..bd7ac09f7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,7 @@ linux (4.17.6-2) UNRELEASED; urgency=medium - kbuild: Add build salt to the kernel and modules - [arm64,powerpc,x86] Add build salt to the vDSO - Set BUILD_SALT equal to the release string + * init: Avoid ABI change for build salt [ Vagrant Cascadian ] * [riscv64] Build linux-libc-dev (Closes: #886440). diff --git a/debian/patches/debian/init-avoid-abi-change-for-build-salt.patch b/debian/patches/debian/init-avoid-abi-change-for-build-salt.patch new file mode 100644 index 000000000..0b207ee9d --- /dev/null +++ b/debian/patches/debian/init-avoid-abi-change-for-build-salt.patch @@ -0,0 +1,24 @@ +From: Ben Hutchings +Date: Sun, 15 Jul 2018 23:44:02 +0100 +Subject: init: Avoid ABI change for build salt +Forwarded: not-needed + + indirectly includes , which +apparently adds some type definitions that change the symbol +version for init_uts_ns. + +Hide this change from genksyms. + +--- +--- a/init/version.c ++++ b/init/version.c +@@ -7,7 +7,9 @@ + */ + + #include ++#ifndef __GENKSYMS__ + #include ++#endif + #include + #include + #include diff --git a/debian/patches/series b/debian/patches/series index 02ee750f3..33de109fb 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -161,3 +161,4 @@ debian/wireless-disable-regulatory.db-direct-loading.patch # ABI maintenance debian/hid-avoid-abi-change-in-4.17.6.patch debian/dax-avoid-abi-change-in-4.17.6.patch +debian/init-avoid-abi-change-for-build-salt.patch From 7b60a4cf80ad01719a40b29273bf32be764f9e64 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 15 Jul 2018 23:45:56 +0100 Subject: [PATCH 10/10] Prepare to release linux (4.17.6-2). --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index bd7ac09f7..0eceed954 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -linux (4.17.6-2) UNRELEASED; urgency=medium +linux (4.17.6-2) unstable; urgency=medium [ Ben Hutchings ] * [armhf] drm/sun4i: Ignore ABI changes (fixes FTBFS) @@ -20,7 +20,7 @@ linux (4.17.6-2) UNRELEASED; urgency=medium * [riscv64] Build linux-libc-dev (Closes: #886440). Thanks to Manuel A. Fernandez Montecelo. - -- Ben Hutchings Thu, 12 Jul 2018 15:16:15 +0100 + -- Ben Hutchings Sun, 15 Jul 2018 23:45:56 +0100 linux (4.17.6-1) unstable; urgency=medium