Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision 8b71f3e7d8255e3651a3c9506da74aec01714454)
+++ 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);
