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

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

[S390] ptrace inferior call interactions with TIF_SYSCALL



The TIF_SYSCALL bit needs to be cleared if the debugger changes the state
of the ptraced process in regard to the presence of a system call.
Otherwise the system call will be restarted although the debugger set up
an inferior call.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 5f894cbb
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -460,9 +460,9 @@ void do_signal(struct pt_regs *regs)
						     regs->svc_code >> 16);
				break;
			}
		}
		/* No longer in a system call */
		clear_thread_flag(TIF_SYSCALL);
		}

		if ((is_compat_task() ?
		     handle_signal32(signr, &ka, &info, oldset, regs) :
@@ -486,6 +486,7 @@ void do_signal(struct pt_regs *regs)
	}

	/* No handlers present - check for system call restart */
	clear_thread_flag(TIF_SYSCALL);
	if (current_thread_info()->system_call) {
		regs->svc_code = current_thread_info()->system_call;
		switch (regs->gprs[2]) {
@@ -500,9 +501,6 @@ void do_signal(struct pt_regs *regs)
			regs->gprs[2] = regs->orig_gpr2;
			set_thread_flag(TIF_SYSCALL);
			break;
		default:
			clear_thread_flag(TIF_SYSCALL);
			break;
		}
	}