diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2011-11-30 13:16:29 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2011-12-01 20:41:42 +0000 |
commit | e0f5fd87da61c6123467a8701e9c0dc5b528f3bf (patch) | |
tree | 761c4b05f04f6e003a2a57d6bdd4374bd0e45e42 /ipc.c | |
parent | 436d892212dd56401bacf818a238333d30f85c6a (diff) | |
download | strace-e0f5fd87da61c6123467a8701e9c0dc5b528f3bf.tar.gz strace-e0f5fd87da61c6123467a8701e9c0dc5b528f3bf.tar.bz2 strace-e0f5fd87da61c6123467a8701e9c0dc5b528f3bf.tar.xz |
Fix sys_ipc/sys_semtimedop decoding on s390
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 (sys_semtimedop): Fix timespec decoding on s390.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'ipc.c')
-rw-r--r-- | ipc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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(", "); |