da98603597
This PR is a blend of several kernel bumps authored by ldir taken from his staging tree w/ some further adjustments made by me and update_kernel.sh Summary: Deleted upstreamed patches: generic: 742-v5.5-net-sfp-add-support-for-module-quirks.patch 743-v5.5-net-sfp-add-some-quirks-for-GPON-modules.patch bcm63xx: 022-v5.8-mtd-rawnand-brcmnand-correctly-verify-erased-pages.patch 024-v5.8-mtd-rawnand-brcmnand-fix-CS0-layout.patch mediatek: 0402-net-ethernet-mtk_eth_soc-Always-call-mtk_gmac0_rgmii.patch Deleted patches applied differently upstream: generic: 641-sch_cake-fix-IP-protocol-handling-in-the-presence-of.patch Manually merged patches: generic: 395-v5.8-net-sch_cake-Take-advantage-of-skb-hash-where-appropriate.patch bcm27xx: 950-0132-lan78xx-Debounce-link-events-to-minimize-poll-storm.patch layerscape: 701-net-0231-enetc-Use-DT-protocol-information-to-set-up-the-port.patch Build system: x86_64 Build-tested: ath79/generic, bcm27xx/bcm2708, bcm27xx/bcm2711, imx6, mvebu/cortexa9, sunxi/a53 Run-tested: Netgear R7800 (ipq806x) No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> Tested-By: Lucian Cristian <Lucian.cristian@gmail.com> [mvebu] Tested-By: Curtis Deptuck <curtdept@me.com> [x86/64] [do not remove 395-v5.8-net-sch_cake-Take-advantage-... patch, adjust and refresh patches, adjust commit message] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Tested-By: John Audia <graysky@archlinux.us> [ipq806x]
55 lines
2.5 KiB
Diff
55 lines
2.5 KiB
Diff
From d3f703c4359ff06619b2322b91f69710453e6b6d Mon Sep 17 00:00:00 2001
|
|
From: Victor Kamensky <kamensky@cisco.com>
|
|
Date: Tue, 11 Feb 2020 11:24:33 -0800
|
|
Subject: [PATCH] mips: vdso: fix 'jalr t9' crash in vdso code
|
|
|
|
Observed that when kernel is built with Yocto mips64-poky-linux-gcc,
|
|
and mips64-poky-linux-gnun32-gcc toolchain, resulting vdso contains
|
|
'jalr t9' instructions in its code and since in vdso case nobody
|
|
sets GOT table code crashes when instruction reached. On other hand
|
|
observed that when kernel is built mips-poky-linux-gcc toolchain, the
|
|
same 'jalr t9' instruction are replaced with PC relative function
|
|
calls using 'bal' instructions.
|
|
|
|
The difference boils down to -mrelax-pic-calls and -mexplicit-relocs
|
|
gcc options that gets different default values depending on gcc
|
|
target triplets and corresponding binutils. -mrelax-pic-calls got
|
|
enabled by default only in mips-poky-linux-gcc case. MIPS binutils
|
|
ld relies on R_MIPS_JALR relocation to convert 'jalr t9' into 'bal'
|
|
and such relocation is generated only if -mrelax-pic-calls option
|
|
is on.
|
|
|
|
Please note 'jalr t9' conversion to 'bal' can happen only to static
|
|
functions. These static PIC calls use mips local GOT entries that
|
|
are supposed to be filled with start of DSO value by run-time linker
|
|
(missing in VDSO case) and they do not have dynamic relocations.
|
|
Global mips GOT entries must have dynamic relocations and they should
|
|
be prevented by cmd_vdso_check Makefile rule.
|
|
|
|
Solution call out -mrelax-pic-calls and -mexplicit-relocs options
|
|
explicitly while compiling MIPS vdso code. That would get correct
|
|
and consistent between different toolchains behaviour.
|
|
|
|
Reported-by: Bruce Ashfield <bruce.ashfield@gmail.com>
|
|
Signed-off-by: Victor Kamensky <kamensky@cisco.com>
|
|
Signed-off-by: Paul Burton <paulburton@kernel.org>
|
|
Cc: linux-mips@vger.kernel.org
|
|
Cc: Ralf Baechle <ralf@linux-mips.org>
|
|
Cc: James Hogan <jhogan@kernel.org>
|
|
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
|
|
Cc: richard.purdie@linuxfoundation.org
|
|
---
|
|
arch/mips/vdso/Makefile | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
--- a/arch/mips/vdso/Makefile
|
|
+++ b/arch/mips/vdso/Makefile
|
|
@@ -29,6 +29,7 @@ endif
|
|
cflags-vdso := $(ccflags-vdso) \
|
|
$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
|
|
-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
|
|
+ -mrelax-pic-calls -mexplicit-relocs \
|
|
-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
|
|
$(call cc-option, -fno-asynchronous-unwind-tables) \
|
|
$(call cc-option, -fno-stack-protector)
|