Index: uspace/drv/uhci/uhci.c
===================================================================
--- uspace/drv/uhci/uhci.c	(revision 987dda8790dfa3d5fb8d4e582a13153820c50f94)
+++ uspace/drv/uhci/uhci.c	(revision 45c4f5afa8edc63b9162bd39ff8164e4b26222d3)
@@ -198,6 +198,5 @@
 		uhci_print_error(message); \
 		if (job) { \
-			callback_fini(job); \
-			trans_free(job); \
+			callback_dispose(job); \
 		} \
 		if (td) { trans_free(td); } \
@@ -206,10 +205,7 @@
 
 
-	job = malloc(sizeof(callback_t));
-	ret= job ? EOK : ENOMEM;
+	job = callback_get(dev, buffer, size, callback_in, callback_out, arg);
+	ret = job ? EOK : ENOMEM;
 	CHECK_RET_TRANS_FREE_JOB_TD("Failed to allocate callback structure.\n");
-
-	ret = callback_init(job, dev, buffer, size, callback_in, callback_out, arg);
-	CHECK_RET_TRANS_FREE_JOB_TD("Failed to initialize callback structure.\n");
 
 	td = transfer_descriptor_get(3, size, false, target, pid);
