From b53f546d3ea06acd8226440cb9bfa282e13b9ca3 Mon Sep 17 00:00:00 2001 From: Eugene Syromyatnikov Date: Mon, 22 Aug 2016 11:51:16 +0300 Subject: [PATCH] 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. --- time.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) 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) -- 2.40.0