The s390 kernel sys_ipc system call only takes five arguments instead of
six arguments which the common code sys_ipc implementation takes.
One of the arguments of the sys_semtimedop subcall is therefore passed in
a different register than in the common code implementation.
This leads to broken decoding of the timespec argument:
semtimedop(0, 0x3ffffb43832, 1, {...}) = -1 EAGAIN
Fixed it looks like this:
semtimedop(0, 0x3ffffc2c842, 1, {0, 10000000}) = -1 EINTR
* linux/ipc.c: Fix sys_semtimedop decoding on s390
Signed-off-by: Heiko Carstens <[email protected]>
---
ipc.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/ipc.c b/ipc.c
index 25539a6..5fb2c67 100644
--- a/ipc.c
+++ b/ipc.c
@@ -346,7 +346,11 @@ int sys_semtimedop(struct tcb *tcp)
if (indirect_ipccall(tcp)) {
tprint_sembuf(tcp, tcp->u_arg[3], tcp->u_arg[1]);
tprints(", ");
+#if defined(S390)
+ printtv(tcp, tcp->u_arg[2]);
+#else
printtv(tcp, tcp->u_arg[5]);
+#endif
} else {
tprint_sembuf(tcp, tcp->u_arg[1], tcp->u_arg[2]);
tprints(", ");
--
1.7.7.3
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Strace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel