Index: uspace/drv/bus/usb/ohci/root_hub.c
===================================================================
--- uspace/drv/bus/usb/ohci/root_hub.c	(revision c85804f9f44a2f7d6f47dcb22455b2b036c47f39)
+++ uspace/drv/bus/usb/ohci/root_hub.c	(revision 062b25f164f43d28d32279ff4bc03f8d7d0feace)
@@ -162,5 +162,5 @@
 static const uint32_t port_status_change_mask = RHPS_CHANGE_WC_MASK;
 
-static int create_serialized_hub_descriptor(rh_t *instance);
+static void create_serialized_hub_descriptor(rh_t *instance);
 
 static int rh_init_descriptors(rh_t *instance);
@@ -227,4 +227,5 @@
 {
 	assert(instance);
+	assert(regs);
 
 	instance->registers = regs;
@@ -321,5 +322,5 @@
  * @return Error code
  */
-int create_serialized_hub_descriptor(rh_t *instance)
+void create_serialized_hub_descriptor(rh_t *instance)
 {
 	assert(instance);
@@ -329,18 +330,18 @@
 	/* 7 bytes + 2 port bit fields (port count + global bit) */
 	const size_t size = 7 + (bit_field_size * 2);
-
-	uint8_t *result = malloc(size);
-	if (!result)
-	    return ENOMEM;
+	assert(size <= HUB_DESCRIPTOR_MAX_SIZE);
+	instance->descriptor_size = size;
+
+	const uint32_t hub_desc = instance->registers->rh_desc_a;
+	const uint32_t port_desc = instance->registers->rh_desc_b;
 
 	/* bDescLength */
-	result[0] = size;
+	instance->hub_descriptor[0] = size;
 	/* bDescriptorType */
-	result[1] = USB_DESCTYPE_HUB;
+	instance->hub_descriptor[1] = USB_DESCTYPE_HUB;
 	/* bNmbrPorts */
-	result[2] = instance->port_count;
-	const uint32_t hub_desc = instance->registers->rh_desc_a;
+	instance->hub_descriptor[2] = instance->port_count;
 	/* wHubCharacteristics */
-	result[3] = 0 |
+	instance->hub_descriptor[3] = 0 |
 	    /* The lowest 2 bits indicate power switching mode */
 	    (((hub_desc & RHDA_PSM_FLAG)  ? 1 : 0) << 0) |
@@ -353,23 +354,21 @@
 
 	/* Reserved */
-	result[4] = 0;
+	instance->hub_descriptor[4] = 0;
 	/* bPwrOn2PwrGood */
-	result[5] = (hub_desc >> RHDA_POTPGT_SHIFT) & RHDA_POTPGT_MASK;
+	instance->hub_descriptor[5] =
+	    (hub_desc >> RHDA_POTPGT_SHIFT) & RHDA_POTPGT_MASK;
 	/* bHubContrCurrent, root hubs don't need no power. */
-	result[6] = 0;
-
-	const uint32_t port_desc = instance->registers->rh_desc_a;
+	instance->hub_descriptor[6] = 0;
+
 	/* Device Removable and some legacy 1.0 stuff*/
-	result[7] = (port_desc >> RHDB_DR_SHIFT) & RHDB_DR_MASK & 0xff;
-	result[8] = 0xff;
+	instance->hub_descriptor[7] =
+	    (port_desc >> RHDB_DR_SHIFT) & RHDB_DR_MASK & 0xff;
+	instance->hub_descriptor[8] = 0xff;
 	if (bit_field_size == 2) {
-		result[8]  = (port_desc >> RHDB_DR_SHIFT) & RHDB_DR_MASK >> 8;
-		result[9]  = 0xff;
-		result[10] = 0xff;
-	}
-	instance->hub_descriptor = result;
-	instance->descriptor_size = size;
-
-	return EOK;
+		instance->hub_descriptor[8] =
+		    (port_desc >> RHDB_DR_SHIFT) & RHDB_DR_MASK >> 8;
+		instance->hub_descriptor[9]  = 0xff;
+		instance->hub_descriptor[10] = 0xff;
+	}
 }
 /*----------------------------------------------------------------------------*/
@@ -392,7 +391,5 @@
 	    sizeof(ohci_rh_conf_descriptor));
 
-	int opResult = create_serialized_hub_descriptor(instance);
-	if (opResult != EOK)
-		return opResult;
+	create_serialized_hub_descriptor(instance);
 
 	descriptor.total_length =
Index: uspace/drv/bus/usb/ohci/root_hub.h
===================================================================
--- uspace/drv/bus/usb/ohci/root_hub.h	(revision c85804f9f44a2f7d6f47dcb22455b2b036c47f39)
+++ uspace/drv/bus/usb/ohci/root_hub.h	(revision 062b25f164f43d28d32279ff4bc03f8d7d0feace)
@@ -41,4 +41,7 @@
 #include "batch.h"
 
+#define HUB_DESCRIPTOR_MAX_SIZE 11
+#define INTERRUPT_BUFFER_MAX_SIZE 2
+
 /**
  * ohci root hub representation
@@ -54,5 +57,5 @@
 	usb_device_descriptors_t descriptors;
 	/** interrupt transfer waiting for an actual interrupt to occur */
-	usb_transfer_batch_t * unfinished_interrupt_transfer;
+	usb_transfer_batch_t *unfinished_interrupt_transfer;
 	/** Interrupt mask of changes
 	 *
@@ -60,12 +63,11 @@
 	 * gives max 2 bytes.
 	 */
-	uint8_t interrupt_buffer[2];
+	uint8_t interrupt_buffer[INTERRUPT_BUFFER_MAX_SIZE];
 	/** size of interrupt buffer */
 	size_t interrupt_mask_size;
 	/** instance`s descriptor*/
-	uint8_t * hub_descriptor;
+	uint8_t hub_descriptor[HUB_DESCRIPTOR_MAX_SIZE];
 	/** size of hub descriptor */
 	size_t descriptor_size;
-
 
 } rh_t;
