diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index b6602ded4e1a93e1cb97a62de5fe199b73d9559b..833250a886afb4d8fa7dc8697bfc6618a55f9330 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -988,7 +988,9 @@ static void usb_host_exit_notifier(struct Notifier *n, void *data)
 
     if (s->dh) {
         usb_host_release_interfaces(s);
+        libusb_reset_device(s->dh);
         usb_host_attach_kernel(s);
+        libusb_close(s->dh);
     }
 }