Skip to contentSkip to conversation

Patch "arm64: vdso: work-around broken ELF toolchains in Makefile" has been added to the 3.14-stable tree

PATCH [email protected] 1 participant 1 message Jul 17, 2015

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

arm64: vdso: work-around broken ELF toolchains in Makefile

to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
arm64-vdso-work-around-broken-elf-toolchains-in-makefile.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 6f1a6ae87c0c60d7c462ef8fd071f291aa7a9abb Mon Sep 17 00:00:00 2001

From: Will Deacon <[email protected]>
Date: Fri, 19 Jun 2015 13:56:33 +0100
Subject: arm64: vdso: work-around broken ELF toolchains in Makefile

From: Will Deacon <[email protected]>

commit 6f1a6ae87c0c60d7c462ef8fd071f291aa7a9abb upstream.

When building the kernel with a bare-metal (ELF) toolchain, the -shared option may not be passed down to collect2, resulting in silent corruption of the vDSO image (in particular, the DYNAMIC section is omitted).

The effect of this corruption is that the dynamic linker fails to find the vDSO symbols and libc is instead used for the syscalls that we intended to optimise (e.g. gettimeofday). Functionally, there is no issue as the sigreturn trampoline is still intact and located by the kernel.

This patch fixes the problem by explicitly passing -shared to the linker when building the vDSO.

---
 arch/arm64/kernel/vdso/Makefile |    4 ++++
 1 file changed, 4 insertions(+)
arch/arm64/kernel/vdso/Makefile +4 -0
@@ -15,6 +15,10 @@ ccflags-y := -shared -fno-common -fno-bu
 ccflags-y += -nostdlib -Wl,-soname=linux-vdso.so.1 \
 		$(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
 
+# Workaround for bare-metal (ELF) toolchains that neglect to pass -shared
+# down to collect2, resulting in silent corruption of the vDSO image.
+ccflags-y += -Wl,-shared
+
 obj-y += vdso.o
 extra-y += vdso.lds vdso-offsets.h
 CPPFLAGS_vdso.lds += -P -C -U$(ARCH)

Patches currently in stable-queue which might be from [email protected] are

queue-3.14/arm64-vdso-work-around-broken-elf-toolchains-in-makefile.patch