linux-stable/arch/powerpc/kernel/vdso64
Raoni Fassina Firmino 24321ac668 powerpc/64/signal: Fix regression in __kernel_sigtramp_rt64() semantics
Commit 0138ba5783 ("powerpc/64/signal: Balance return predictor
stack in signal trampoline") changed __kernel_sigtramp_rt64() VDSO and
trampoline code, and introduced a regression in the way glibc's
backtrace()[1] detects the signal-handler stack frame. Apart from the
practical implications, __kernel_sigtramp_rt64() was a VDSO function
with the semantics that it is a function you can call from userspace
to end a signal handling. Now this semantics are no longer valid.

I believe the aforementioned change affects all releases since 5.9.

This patch tries to fix both the semantics and practical aspect of
__kernel_sigtramp_rt64() returning it to the previous code, whilst
keeping the intended behaviour of 0138ba5783 by adding a new symbol
to serve as the jump target from the kernel to the trampoline. Now the
trampoline has two parts, a new entry point and the old return point.

[1] https://lists.ozlabs.org/pipermail/linuxppc-dev/2021-January/223194.html

Fixes: 0138ba5783 ("powerpc/64/signal: Balance return predictor stack in signal trampoline")
Cc: stable@vger.kernel.org # v5.9+
Signed-off-by: Raoni Fassina Firmino <raoni@linux.ibm.com>
Acked-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Minor tweaks to change log formatting, add stable tag]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210201200505.iz46ubcizipnkcxe@work-tp
2021-02-02 22:14:41 +11:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
cacheflush.S powerpc/vdso: Merge __kernel_sync_dicache_p5() into __kernel_sync_dicache() 2020-12-04 01:01:17 +11:00
datapage.S powerpc/vdso: Remove __kernel_datapage_offset 2020-12-04 01:01:18 +11:00
gen_vdso_offsets.sh powerpc/vdso: Retrieve sigtramp offsets at buildtime 2020-12-04 01:01:17 +11:00
getcpu.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
gettimeofday.S powerpc/vdso: Switch VDSO to generic C implementation. 2020-12-04 01:01:10 +11:00
Makefile powerpc/vdso64: remove meaningless vgettimeofday.o build rule 2021-01-30 22:23:42 +11:00
note.S
sigtramp.S powerpc/64/signal: Fix regression in __kernel_sigtramp_rt64() semantics 2021-02-02 22:14:41 +11:00
vdso64.lds.S powerpc/64/signal: Fix regression in __kernel_sigtramp_rt64() semantics 2021-02-02 22:14:41 +11:00
vgettimeofday.c powerpc/vdso: Prepare for switching VDSO to generic C implementation. 2020-12-04 01:01:10 +11:00