]> granicus.if.org Git - strace/commitdiff
2003-09-24 Roland McGrath <roland@redhat.com>
authorRoland McGrath <roland@redhat.com>
Wed, 24 Sep 2003 22:22:41 +0000 (22:22 +0000)
committerRoland McGrath <roland@redhat.com>
Wed, 24 Sep 2003 22:22:41 +0000 (22:22 +0000)
* syscall.c (get_scno) [LINUX] [S390 || S390X]: Bail out of
instruction decoding branch if TCB_INSYSCALL is clear.
Reported by <jochen@penguin-breeder.org>.

syscall.c

index 1fb30d9cd3509b3c86ec9cae47346032ff55d0e7..e5c511519661ef1345b418f3be2dae4a4cb36827 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -777,6 +777,12 @@ struct tcb *tcp;
                                      PT_GPR8,  PT_GPR9,  PT_GPR10,    PT_GPR11,
                                      PT_GPR12, PT_GPR13, PT_GPR14,    PT_GPR15};
 
+               /* Bail out since if we stopped for a signal after the last
+                  system call return, we might not be looking at the kind
+                  of instruction stream we expect.  */
+               if (!(tcp->flags & TCB_INSYSCALL))
+                       return 1;
+
                if (upeek(pid, PT_PSWADDR, &pc) < 0)
                        return -1;
                errno = 0;