Index: uspace/drv/bus/usb/ehci/main.c
===================================================================
--- uspace/drv/bus/usb/ehci/main.c	(revision b5f813c78023578df239717fa27402f0915a7610)
+++ uspace/drv/bus/usb/ehci/main.c	(revision 5534687083f14e14c09dca1bdecd617a3836622b)
@@ -80,6 +80,9 @@
 
 	const int ret = hc_init(instance, res, irq);
-	if (ret == EOK)
+	if (ret == EOK) {
 		hcd_set_implementation(hcd, instance, &ehci_hc_driver.ops);
+	} else {
+		free(instance);
+	}
 	return ret;
 }
Index: uspace/drv/bus/usb/ohci/main.c
===================================================================
--- uspace/drv/bus/usb/ohci/main.c	(revision b5f813c78023578df239717fa27402f0915a7610)
+++ uspace/drv/bus/usb/ohci/main.c	(revision 5534687083f14e14c09dca1bdecd617a3836622b)
@@ -75,6 +75,9 @@
 
 	const int ret = hc_init(instance, res, irq);
-	if (ret == EOK)
+	if (ret == EOK) {
 		hcd_set_implementation(hcd, instance, &ohci_hc_driver.ops);
+	} else {
+		free(instance);
+	}
 	return ret;
 }
Index: uspace/drv/bus/usb/uhci/main.c
===================================================================
--- uspace/drv/bus/usb/uhci/main.c	(revision b5f813c78023578df239717fa27402f0915a7610)
+++ uspace/drv/bus/usb/uhci/main.c	(revision 5534687083f14e14c09dca1bdecd617a3836622b)
@@ -76,6 +76,9 @@
 
 	const int ret = hc_init(instance, res, irq);
-	if (ret == EOK)
+	if (ret == EOK) {
 		hcd_set_implementation(hcd, instance, &uhci_hc_driver.ops);
+	} else {
+		free(instance);
+	}
 	return ret;
 }
