Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision 0e164edcddf2f89912bd44ecc35d68474eda1473)
+++ uspace/drv/usbhub/usbhub.c	(revision 332f860760c200637bf109329ab9a97e0a180005)
@@ -234,5 +234,5 @@
 	usb_endpoint_pipe_start_session(&result->endpoints.control);
 	opResult = usb_request_get_descriptor(&result->endpoints.control,
-			USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_DEVICE,
+			USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
 			USB_DESCTYPE_HUB,
 			0, 0, serialized_descriptor,
@@ -243,5 +243,6 @@
 		dprintf(USB_LOG_LEVEL_ERROR, "failed when receiving hub descriptor, badcode = %d",opResult);
 		free(serialized_descriptor);
-		return result;
+		free(result);
+		return NULL;
 	}
 	dprintf(USB_LOG_LEVEL_DEBUG2, "deserializing descriptor");
@@ -249,6 +250,6 @@
 	if(descriptor==NULL){
 		dprintf(USB_LOG_LEVEL_WARNING, "could not deserialize descriptor ");
-		result->port_count = 1;///\TODO this code is only for debug!!!
-		return result;
+		free(result);
+		return NULL;
 	}
 
@@ -286,4 +287,7 @@
 
 	usb_hub_info_t * hub_info = usb_create_hub_info(dev);
+	if(!hub_info){
+		return EINTR;
+	}
 
 	int opResult;
@@ -294,5 +298,5 @@
 	opResult = usb_hub_process_configuration_descriptors(hub_info);
 	if(opResult != EOK){
-		dprintf(USB_LOG_LEVEL_ERROR,"could not get condiguration descriptors, %d",
+		dprintf(USB_LOG_LEVEL_ERROR,"could not get configuration descriptors, %d",
 				opResult);
 		return opResult;
