Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cfc9066b authored by Martin Schwidefsky's avatar Martin Schwidefsky
Browse files

[S390] remove reset of system call restart on psw changes



git commit 20b40a79 "signal race with restarting system calls"
added code to the poke_user/poke_user_compat to reset the system call
restart information in the thread-info if the PSW address is changed.
The purpose of that change has been to workaround old gdbs that do
not know about the REGSET_SYSTEM_CALL. It turned out that this is not
a good idea, it makes the behaviour of the debuggee dependent on the
order of specific ptrace call, e.g. the REGSET_SYSTEM_CALL register
set needs to be written last. And the workaround does not really fix
old gdbs, inferior calls on interrupted restarting system calls do not
work either way.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent b934069c
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -296,13 +296,6 @@ static int __poke_user(struct task_struct *child, addr_t addr, addr_t data)
		     ((data & PSW_MASK_EA) && !(data & PSW_MASK_BA))))
			/* Invalid psw mask. */
			return -EINVAL;
		if (addr == (addr_t) &dummy->regs.psw.addr)
			/*
			 * The debugger changed the instruction address,
			 * reset system call restart, see signal.c:do_signal
			 */
			task_thread_info(child)->system_call = 0;

		*(addr_t *)((addr_t) &task_pt_regs(child)->psw + addr) = data;

	} else if (addr < (addr_t) (&dummy->regs.orig_gpr2)) {
@@ -614,11 +607,6 @@ static int __poke_user_compat(struct task_struct *child,
			/* Transfer 31 bit amode bit to psw mask. */
			regs->psw.mask = (regs->psw.mask & ~PSW_MASK_BA) |
				(__u64)(tmp & PSW32_ADDR_AMODE);
			/*
			 * The debugger changed the instruction address,
			 * reset system call restart, see signal.c:do_signal
			 */
			task_thread_info(child)->system_call = 0;
		} else {
			/* gpr 0-15 */
			*(__u32*)((addr_t) &regs->psw + addr*2 + 4) = tmp;