From: Alex Bennée Date: Thu, 27 Sep 2018 17:17:24 +0000 (+0100) Subject: cpus: fix TCG kick timer leak X-Git-Tag: v3.1.0-rc0~71^2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=1926ab273b374372e5108a9e360b9e9366d9acf7;p=users%2Fdwmw2%2Fqemu.git cpus: fix TCG kick timer leak This is an alternative fix to Marc-André's original patch. Reported-by: Marc-André Lureau Suggested-by: Paolo Bonzini Signed-off-by: Alex Bennée Message-Id: <20180927171724.30128-1-alex.bennee@linaro.org> Signed-off-by: Paolo Bonzini --- diff --git a/cpus.c b/cpus.c index 68f08f5b2d..361678e459 100644 --- a/cpus.c +++ b/cpus.c @@ -983,6 +983,8 @@ static void start_tcg_kick_timer(void) if (!tcg_kick_vcpu_timer && CPU_NEXT(first_cpu)) { tcg_kick_vcpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, kick_tcg_thread, NULL); + } + if (tcg_kick_vcpu_timer && !timer_pending(tcg_kick_vcpu_timer)) { timer_mod(tcg_kick_vcpu_timer, qemu_tcg_next_kick()); } } @@ -990,9 +992,8 @@ static void start_tcg_kick_timer(void) static void stop_tcg_kick_timer(void) { assert(!mttcg_enabled); - if (tcg_kick_vcpu_timer) { + if (tcg_kick_vcpu_timer && timer_pending(tcg_kick_vcpu_timer)) { timer_del(tcg_kick_vcpu_timer); - tcg_kick_vcpu_timer = NULL; } }