Le 26/07/2018 à 08:48, Shivaprasad G Bhat a écrit : > 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. > > Signed-off-by: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> > --- > Steps to reproduce: > On PPC host, issue `qemu-ppc64le /usr/bin/cc -E -` > Attempt Ctrl-C, the issue is reproduced. > > Reference: > https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#REG
I think these comments should be included in the commit message. Using the example of qemu-x86_64 on ppc64 would be less ambiguous. I've tested on ppc64: qemu-x86_64 /usr/bin/cc -E - Tested-by: Laurent Vivier <laur...@vivier.eu> > linux-user/host/ppc64/safe-syscall.inc.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > Reviewed-by: Laurent Vivier <laur...@vivier.eu> Thanks, Laurent