Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision 574f2763a63b0f7a18a34c671fc59e327a54e4ec)
+++ uspace/drv/usbhub/usbhub.c	(revision 4967c1e597dfe1a0dfb95a2775ed621ea4410cb9)
@@ -336,19 +336,5 @@
  */
 static int usb_hub_start_hub_fibril(usb_hub_info_t * hub_info){
-	/*
-	 * The processing will require opened control pipe and connection
-	 * to the host controller.
-	 * It is waste of resources but let's hope there will be less
-	 * hubs than the phone limit.
-	 * FIXME: with some proper locking over pipes and session
-	 * auto destruction, this could work better.
-	 */
-	int rc = usb_hc_connection_open(&hub_info->connection);
-	if (rc != EOK) {
-		//usb_pipe_end_session(hub_info->control_pipe);
-		usb_log_error("Failed to open connection to HC: %s.\n",
-		    str_error(rc));
-		return rc;
-	}
+	int rc;
 
 	rc = usb_device_auto_poll(hub_info->usb_device, 0,
Index: uspace/lib/usbdev/src/hub.c
===================================================================
--- uspace/lib/usbdev/src/hub.c	(revision 574f2763a63b0f7a18a34c671fc59e327a54e4ec)
+++ uspace/lib/usbdev/src/hub.c	(revision 4967c1e597dfe1a0dfb95a2775ed621ea4410cb9)
@@ -331,4 +331,6 @@
 		goto leave_release_free_address;
 	}
+	
+	usb_hc_connection_close(&hc_conn);
 
 	/*
