linux/arch/arm
Ard Biesheuvel 2b951b0efb ARM: 9297/1: vfp: avoid unbalanced stack on 'success' return path
Commit c76c6c4ecb ("ARM: 9294/2: vfp: Fix broken softirq handling
with instrumentation enabled") updated the VFP exception entry logic to
go via a C function, so that we get the compiler's version of
local_bh_disable(), which may be instrumented, and isn't generally
callable from assembler.

However, this assumes that passing an alternative 'success' return
address works in C as it does in asm, and this is only the case if the C
calls in question are tail calls, as otherwise, the stack will need some
unwinding as well.

I have already sent patches to the list that replace most of the asm
logic with C code, and so it is preferable to have a minimal fix that
addresses the issue and can be backported along with the commit that it

fixes to v6.3 from v6.4. Hopefully, we can land the C conversion for v6.5.

So instead of passing the 'success' return address as a function
argument, pass the stack address from where to pop it so that both LR
and SP have the expected value.

Fixes: c76c6c4ecb ("ARM: 9294/2: vfp: Fix broken softirq handling with ...")
Reported-by: syzbot+d4b00edc2d0c910d4bf4@syzkaller.appspotmail.com
Tested-by: syzbot+d4b00edc2d0c910d4bf4@syzkaller.appspotmail.com
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Tested-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2023-05-10 10:50:25 +01:00
..
boot Qualcomm ARM32 Devicetree fixes for v6.3 2023-03-24 18:06:17 +01:00
common
configs ARM: defconfigs for 6.3 2023-02-20 15:43:36 -08:00
crypto This update includes the following changes: 2023-02-21 18:10:50 -08:00
include ARM: 9294/2: vfp: Fix broken softirq handling with instrumentation enabled 2023-04-12 10:04:56 +01:00
kernel ARM: 9295/1: unwind:fix unwind abort for uleb128 case 2023-05-05 10:16:40 +01:00
lib ARM: 9290/1: uaccess: Fix KASAN false-positives 2023-03-06 15:25:08 +00:00
mach-actions
mach-airoha
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91
mach-axxia
mach-bcm
mach-berlin
mach-clps711x
mach-davinci Scheduler updates in this cycle are: 2023-02-20 17:41:08 -08:00
mach-digicolor
mach-dove
mach-ep93xx ARM: SoC updates for 6.3 2023-02-20 15:36:37 -08:00
mach-exynos
mach-footbridge ARM: unused boardfile removal for 6.3 2023-02-20 15:28:57 -08:00
mach-gemini
mach-highbank
mach-hisi
mach-hpe
mach-imx Scheduler updates in this cycle are: 2023-02-20 17:41:08 -08:00
mach-ixp4xx
mach-keystone
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-milbeaut
mach-mmp ARM: mmp: remove old PM support 2023-01-16 09:26:05 +01:00
mach-moxart
mach-mstar
mach-mv78xx0
mach-mvebu
mach-mxs
mach-nomadik
mach-npcm
mach-nspire
mach-omap1 ARM: SoC updates for 6.3 2023-02-20 15:36:37 -08:00
mach-omap2 Scheduler updates in this cycle are: 2023-02-20 17:41:08 -08:00
mach-orion5x
mach-oxnas
mach-pxa ARM: pxa: restore mfp-pxa320.h 2023-02-08 22:10:39 +01:00
mach-qcom firmware: qcom_scm: Move qcom_scm.h to include/linux/firmware/qcom/ 2023-02-08 19:15:16 -08:00
mach-rda
mach-realtek
mach-rockchip
mach-rpc
mach-s3c Kbuild updates for v6.3 2023-02-26 11:53:25 -08:00
mach-s5pv210
mach-sa1100 ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings 2023-05-05 10:17:35 +01:00
mach-shmobile
mach-socfpga
mach-spear
mach-sti
mach-stm32
mach-sunplus
mach-sunxi
mach-tegra power: remove pda_power supply driver 2023-02-01 17:23:38 +01:00
mach-uniphier
mach-ux500
mach-versatile
mach-vt8500
mach-zynq
mm IOMMU Updates for Linux v6.3: 2023-02-24 13:40:13 -08:00
net
nwfpe
plat-orion
probes
tools
vdso
vfp ARM: 9297/1: vfp: avoid unbalanced stack on 'success' return path 2023-05-10 10:50:25 +01:00
xen
Kbuild
Kconfig ARM udpates for 6.3-rc1 2023-02-21 15:21:29 -08:00
Kconfig-nommu
Kconfig.assembler
Kconfig.debug ARM udpates for 6.3-rc1 2023-02-21 15:21:29 -08:00
Makefile ARM udpates for 6.3-rc1 2023-02-21 15:21:29 -08:00