s390/ptrace: fix setting syscall number
authorSven Schnelle <svens@linux.ibm.com>
Mon, 9 Mar 2020 15:44:50 +0000 (16:44 +0100)
committerSasha Levin <sashal@kernel.org>
Tue, 30 Jun 2020 19:37:04 +0000 (15:37 -0400)
commit7c17909a889d05abf3401a13823834d076651dd5
treeff06dde1b2d0842914948ef8990af1dff277377f
parent64f7b10a91a4177e7d620b545a00c7c86d209770
s390/ptrace: fix setting syscall number

[ Upstream commit 873e5a763d604c32988c4a78913a8dab3862d2f9 ]

When strace wants to update the syscall number, it sets GPR2
to the desired number and updates the GPR via PTRACE_SETREGSET.
It doesn't update regs->int_code which would cause the old syscall
executed on syscall restart. As we cannot change the ptrace ABI and
don't have a field for the interruption code, check whether the tracee
is in a syscall and the last instruction was svc. In that case assume
that the tracer wants to update the syscall number and copy the GPR2
value to regs->int_code.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/s390/kernel/ptrace.c