Skip to content

Commit fdfb71e

Browse files
mgcaojren1
authored andcommitted
delete watchdog timer when deinit is called
to avoid system resource/memory leaked when guest os reboot. Signed-off-by: Minggui Cao <minggui.cao@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent 6b4ad0b commit fdfb71e

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

devicemodel/hw/pci/wdt_i6300esb.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ wdt_expired_thread(union sigval v)
132132
}
133133

134134
static void
135-
stop_wdt_timer()
135+
stop_wdt_timer(void)
136136
{
137137
struct itimerspec timer_val;
138138

@@ -145,6 +145,19 @@ stop_wdt_timer()
145145
timer_settime(wdt_state.wdt_timerid, 0, &timer_val, NULL);
146146
}
147147

148+
static void
149+
delete_wdt_timer(void)
150+
{
151+
if (!wdt_state.timer_created)
152+
return;
153+
154+
DPRINTF("%s: timer %ld deleted\n", __func__,
155+
(uint64_t)wdt_state.wdt_timerid);
156+
157+
timer_delete(wdt_state.wdt_timerid);
158+
wdt_state.timer_created = false;
159+
}
160+
148161
static void
149162
reset_wdt_timer(int seconds)
150163
{
@@ -340,11 +353,10 @@ pci_wdt_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
340353
return 0;
341354
}
342355

343-
344356
static void
345357
pci_wdt_deinit(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
346358
{
347-
stop_wdt_timer();
359+
delete_wdt_timer();
348360
memset(&wdt_state, 0, sizeof(wdt_state));
349361
}
350362

0 commit comments

Comments
 (0)