From: Gonglei <arei.gong...@huawei.com>

clean up uhci resource when uhci pci device exit.
Signed-off-by: Gonglei <arei.gong...@huawei.com>
---
 hw/usb/hcd-uhci.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index c3bf72c..4e8a640 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1260,7 +1260,23 @@ static void usb_uhci_exit(PCIDevice *dev)
 {
     UHCIState *s = DO_UPCAST(UHCIState, dev, dev);
 
+    if (s->frame_timer) {
+        timer_del(s->frame_timer);
+        timer_free(s->frame_timer);
+        s->frame_timer = NULL;
+    }
+
+    if (s->bh) {
+        qemu_bh_delete(s->bh);
+    }
+
+    uhci_async_cancel_all(s);
+
     memory_region_destroy(&s->io_bar);
+
+    if (!s->masterbus) {
+        usb_bus_release(&s->bus);
+    }
 }
 
 static Property uhci_properties[] = {
-- 
1.7.12.4



Reply via email to