Index: uspace/lib/usbhost/include/usb/host/batch.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/batch.h	(revision b5cfeab48ed2fbc3d7fc9ffd0ab2deb8c6a82cae)
+++ uspace/lib/usbhost/include/usb/host/batch.h	(revision 96e2d012578e18a483c12bb39e99a208a1ed7a38)
@@ -91,9 +91,33 @@
 );
 
-void usb_transfer_batch_call_in_and_dispose(usb_transfer_batch_t *instance);
-void usb_transfer_batch_call_out_and_dispose(usb_transfer_batch_t *instance);
 void usb_transfer_batch_finish(usb_transfer_batch_t *instance);
+void usb_transfer_batch_call_in(usb_transfer_batch_t *instance);
+void usb_transfer_batch_call_out(usb_transfer_batch_t *instance);
 void usb_transfer_batch_dispose(usb_transfer_batch_t *instance);
 
+/** Helper function, calls callback and correctly destroys batch structure.
+ *
+ * @param[in] instance Batch structure to use.
+ */
+static inline void usb_transfer_batch_call_in_and_dispose(
+    usb_transfer_batch_t *instance)
+{
+	assert(instance);
+	usb_transfer_batch_call_in(instance);
+	usb_transfer_batch_dispose(instance);
+}
+/*----------------------------------------------------------------------------*/
+/** Helper function calls callback and correctly destroys batch structure.
+ *
+ * @param[in] instance Batch structure to use.
+ */
+static inline void usb_transfer_batch_call_out_and_dispose(
+    usb_transfer_batch_t *instance)
+{
+	assert(instance);
+	usb_transfer_batch_call_out(instance);
+	usb_transfer_batch_dispose(instance);
+}
+/*----------------------------------------------------------------------------*/
 static inline void usb_transfer_batch_finish_error(
     usb_transfer_batch_t *instance, int error)
@@ -103,5 +127,5 @@
 	usb_transfer_batch_finish(instance);
 }
-
+/*----------------------------------------------------------------------------*/
 static inline usb_transfer_batch_t *usb_transfer_batch_from_link(link_t *l)
 {
Index: uspace/lib/usbhost/src/batch.c
===================================================================
--- uspace/lib/usbhost/src/batch.c	(revision b5cfeab48ed2fbc3d7fc9ffd0ab2deb8c6a82cae)
+++ uspace/lib/usbhost/src/batch.c	(revision 96e2d012578e18a483c12bb39e99a208a1ed7a38)
@@ -40,7 +40,4 @@
 #include <usb/host/hcd.h>
 
-void usb_transfer_batch_call_in(usb_transfer_batch_t *instance);
-void usb_transfer_batch_call_out(usb_transfer_batch_t *instance);
-
 void usb_transfer_batch_init(
     usb_transfer_batch_t *instance,
@@ -76,27 +73,6 @@
 	instance->next_step = NULL;
 	instance->error = EOK;
-	endpoint_use(instance->ep);
-}
-/*----------------------------------------------------------------------------*/
-/** Helper function, calls callback and correctly destroys batch structure.
- *
- * @param[in] instance Batch structure to use.
- */
-void usb_transfer_batch_call_in_and_dispose(usb_transfer_batch_t *instance)
-{
-	assert(instance);
-	usb_transfer_batch_call_in(instance);
-	usb_transfer_batch_dispose(instance);
-}
-/*----------------------------------------------------------------------------*/
-/** Helper function calls callback and correctly destroys batch structure.
- *
- * @param[in] instance Batch structure to use.
- */
-void usb_transfer_batch_call_out_and_dispose(usb_transfer_batch_t *instance)
-{
-	assert(instance);
-	usb_transfer_batch_call_out(instance);
-	usb_transfer_batch_dispose(instance);
+	if (instance->ep)
+		endpoint_use(instance->ep);
 }
 /*----------------------------------------------------------------------------*/
@@ -109,8 +85,8 @@
 {
 	assert(instance);
-	assert(instance->ep);
-	assert(instance->next_step);
-	endpoint_release(instance->ep);
-	instance->next_step(instance);
+	if (instance->ep)
+		endpoint_release(instance->ep);
+	if (instance->next_step)
+		instance->next_step(instance);
 }
 /*----------------------------------------------------------------------------*/
@@ -125,5 +101,4 @@
 	assert(instance);
 	assert(instance->callback_in);
-	assert(instance->ep);
 
 	/* We are data in, we need data */
@@ -171,5 +146,6 @@
 void usb_transfer_batch_dispose(usb_transfer_batch_t *instance)
 {
-	assert(instance);
+	if (!instance)
+		return;
 	usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT " disposing.\n",
 	    instance, USB_TRANSFER_BATCH_ARGS(*instance));
