Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision 17c1d9dbfddf40b2e8f215081df252437534ca5f)
+++ uspace/drv/bus/usb/usbhub/usbhub.c	(revision 01d9707def50a27e9dac22665ae9b52e4e869ffa)
@@ -164,4 +164,5 @@
 	opResult = usb_polling_init(polling);
 	if (opResult != EOK) {
+		/* Function is already bound */
 		ddf_fun_unbind(hub_dev->hub_fun);
 		ddf_fun_destroy(hub_dev->hub_fun);
@@ -183,6 +184,7 @@
 	opResult = usb_polling_start(polling);
 	if (opResult != EOK) {
-		/* Function is already bound */
+		/* Polling is already initialized. */
 		free(polling->buffer);
+		usb_polling_fini(polling);
 		ddf_fun_unbind(hub_dev->hub_fun);
 		ddf_fun_destroy(hub_dev->hub_fun);
