Index: uspace/drv/bus/usb/uhci/batch.c
===================================================================
--- uspace/drv/bus/usb/uhci/batch.c	(revision 3afb7580ffb5859d718216a15a79100e3ab8aa0a)
+++ uspace/drv/bus/usb/uhci/batch.c	(revision 32e093e9873c25920e4db0effd1e8179f5f7ed84)
@@ -93,5 +93,5 @@
  * @param[in] uhci_batch Instance to destroy.
  */
-void uhci_transfer_batch_dispose(void *uhci_batch)
+static void uhci_transfer_batch_dispose(void *uhci_batch)
 {
 	uhci_transfer_batch_t *instance = uhci_batch;
@@ -119,5 +119,5 @@
  * Initializes parameters needed for the transfer and callback.
  */
-void * uhci_transfer_batch_create(usb_transfer_batch_t *batch)
+int batch_init_private(usb_transfer_batch_t *batch)
 {
 #define CHECK_NULL_DISPOSE_RETURN(ptr, message...) \
@@ -127,5 +127,5 @@
 			uhci_transfer_batch_dispose(uhci_data); \
 		} \
-		return NULL; \
+		return ENOMEM; \
 	} else (void)0
 
@@ -164,4 +164,5 @@
 	/* Set generic data buffer pointer */
 	batch->data_buffer = setup + batch->setup_size;
+	batch->private_data_dtor = uhci_transfer_batch_dispose;
 	batch->private_data = uhci_data;
 	usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT
@@ -171,7 +172,6 @@
 	batch_setup[batch->ep->transfer_type][batch->ep->direction](batch);
 
-	return uhci_data;
-}
-/*----------------------------------------------------------------------------*/
+	return EOK;
+}
 /*----------------------------------------------------------------------------*/
 /** Check batch TDs for activity.
