Index: uspace/lib/usb/src/host/batch.c
===================================================================
--- uspace/lib/usb/src/host/batch.c	(revision cd1cec3bc8deaa31b192d8430abb26ebf75ce6f3)
+++ uspace/lib/usb/src/host/batch.c	(revision 4fd3faf06b8a4954818da61d7c31ecaba4839d5c)
@@ -79,4 +79,5 @@
 	instance->error = EOK;
 	instance->ep = ep;
+	endpoint_use(instance->ep);
 }
 /*----------------------------------------------------------------------------*/
@@ -89,4 +90,6 @@
 {
 	assert(instance);
+	assert(instance->ep);
+	endpoint_release(instance->ep);
 	instance->next_step(instance);
 }
Index: uspace/lib/usb/src/host/endpoint.c
===================================================================
--- uspace/lib/usb/src/host/endpoint.c	(revision cd1cec3bc8deaa31b192d8430abb26ebf75ce6f3)
+++ uspace/lib/usb/src/host/endpoint.c	(revision 4fd3faf06b8a4954818da61d7c31ecaba4839d5c)
@@ -60,4 +60,5 @@
 {
 	assert(instance);
+	assert(!instance->active);
 	list_remove(&instance->same_device_eps);
 	free(instance);
@@ -79,6 +80,6 @@
 	fibril_mutex_lock(&instance->guard);
 	instance->active = false;
+	fibril_mutex_unlock(&instance->guard);
 	fibril_condvar_signal(&instance->avail);
-	fibril_mutex_unlock(&instance->guard);
 }
 /*----------------------------------------------------------------------------*/
