From: Eugene Syromyatnikov Date: Mon, 22 Aug 2016 08:51:16 +0000 (+0300) Subject: Fix old_value argument retrieval in timerfd_settime parser X-Git-Tag: v4.14~182 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b53f546d3ea06acd8226440cb9bfa282e13b9ca3;p=strace Fix old_value argument retrieval in timerfd_settime parser This is done similar to timer_settime syscall parser. * time.c (SYS_FUNC(timerfd_settime)): Retrieve old_value argument on exiting and not on entering. Return 0 instead of RVAL_DECODED since the call hasn't been decoded in full on entering. --- diff --git a/time.c b/time.c index 963d0ea2..b32eddf6 100644 --- a/time.c +++ b/time.c @@ -314,15 +314,17 @@ SYS_FUNC(timerfd_create) SYS_FUNC(timerfd_settime) { - printfd(tcp, tcp->u_arg[0]); - tprints(", "); - printflags(timerfdflags, tcp->u_arg[1], "TFD_???"); - tprints(", "); - print_itimerspec(tcp, tcp->u_arg[2]); - tprints(", "); - print_itimerspec(tcp, tcp->u_arg[3]); - - return RVAL_DECODED; + if (entering(tcp)) { + printfd(tcp, tcp->u_arg[0]); + tprints(", "); + printflags(timerfdflags, tcp->u_arg[1], "TFD_???"); + tprints(", "); + print_itimerspec(tcp, tcp->u_arg[2]); + tprints(", "); + } else { + print_itimerspec(tcp, tcp->u_arg[3]); + } + return 0; } SYS_FUNC(timerfd_gettime)