On Thu, Jul 26, 2018 at 10:20:11PM -0700, Richard Henderson wrote: > On 07/26/2018 08:13 PM, David Gibson wrote: > > On Thu, Jul 26, 2018 at 01:56:19PM +0530, Shivaprasad G Bhat wrote: > >> r11 is a volatile register on PPC as per calling conventions. > >> The safe_syscall code uses it to check if the signal_pending > >> is set during the safe_syscall. When a syscall is interrupted > >> on return from signal handling, the r11 might be corrupted > >> before we retry the syscall leading to a crash. The registers > >> r0-r13 are not to be used here as they have > >> volatile/designated/reserved usages. Change the code to use > >> r14 which is non-volatile and is appropriate for local use in > >> safe_syscall. > >> > >> Steps to reproduce: > >> On PPC host, issue `qemu-x86_64 /usr/bin/cc -E -` > >> Attempt Ctrl-C, the issue is reproduced. > >> > >> Reference: > >> https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#REG > >> > >> Signed-off-by: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> > >> Tested-by: Laurent Vivier <laur...@vivier.eu> > >> Reviewed-by: Laurent Vivier <laur...@vivier.eu> > > > > Applied to ppc-for-3.0. > > No please! r14 is a call-saved register and needs saving before > clobbering.
Oops, pulled out now. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature