patch-2.2.19 linux/arch/s390/kernel/signal.c

Next file: linux/arch/s390/kernel/smp.c
Previous file: linux/arch/s390/kernel/setup.c
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.18/arch/s390/kernel/signal.c linux/arch/s390/kernel/signal.c
@@ -327,6 +327,11 @@
 #endif
 	/* Martin wants this for pthreads */
 	regs->gprs[3] = (addr_t)&frame->sc;
+
+	/* We forgot to include these in the sigcontext. 
+	   To avoid breaking binary compatibility, they are passed as args. */
+	regs->gprs[4] = current->tss.trap_no;
+	regs->gprs[5] = current->tss.prot_addr;
 	return;
 
 give_sigsegv:
@@ -383,7 +388,7 @@
 	      siginfo_t *info, sigset_t *oldset, struct pt_regs * regs)
 {
 	/* Are we from a system call? */
-	if (regs->orig_gpr2 >= 0) {
+	if (regs->trap == __LC_SVC_OLD_PSW) {
 		/* If so, check system call restarting.. */
 		switch (regs->gprs[2]) {
 			case -ERESTARTNOHAND:

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)