From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 18/18] libxl: timeouts: Record deregistration when one occurs Date: Mon, 3 Feb 2014 16:14:51 +0000 Message-ID: <1391444091-22796-19-git-send-email-ian.jackson@eu.citrix.com> References: <1391444091-22796-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1391444091-22796-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: George Dunlap , Jim Fehlig , Ian Jackson , Ian Campbell , Ian Jackson List-Id: xen-devel@lists.xenproject.org From: Ian Jackson When a timeout has occurred, it is deregistered. However, we failed to record this fact by updating etime->func. As a result, libxl__ev_time_isregistered would say `true' for a timeout which has already happened. The results are that we might try to have the timeout occur again (causing problems for the call site), and/or corrupt the timeout list. This fixes the timedereg event system unit test. Signed-off-by: Ian Jackson Cc: Jim Fehlig Cc: Ian Campbell --- tools/libxl/libxl_event.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index 5a99932..ea8c744 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -387,7 +387,9 @@ static void time_occurs(libxl__egc *egc, libxl__ev_time *etime) etime, (unsigned long)etime->abs.tv_sec, (unsigned long)etime->abs.tv_usec); - etime->func(egc, etime, &etime->abs); + libxl__ev_time_callback *func = etime->func; + etime->func = 0; + func(egc, etime, &etime->abs); } -- 1.7.10.4