Index: uspace/drv/bus/usb/ehci/ehci_batch.c
===================================================================
--- uspace/drv/bus/usb/ehci/ehci_batch.c	(revision 40687f25d31d27f29a163645cbb815c351aa7ad5)
+++ uspace/drv/bus/usb/ehci/ehci_batch.c	(revision 5c830587ad245e2d08bd664e7d756c6dbeb1e177)
@@ -189,5 +189,6 @@
 	    ehci_batch->qh->next, ehci_batch->qh->alternate);
 
-	if (!qh_halted(ehci_batch->qh) && qh_transfer_pending(ehci_batch->qh))
+	if (!qh_halted(ehci_batch->qh) && (qh_transfer_pending(ehci_batch->qh)
+	    || qh_transfer_active(ehci_batch->qh)))
 		return false;
 
Index: uspace/drv/bus/usb/ehci/hw_struct/queue_head.h
===================================================================
--- uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 40687f25d31d27f29a163645cbb815c351aa7ad5)
+++ uspace/drv/bus/usb/ehci/hw_struct/queue_head.h	(revision 5c830587ad245e2d08bd664e7d756c6dbeb1e177)
@@ -198,4 +198,10 @@
 }
 
+static inline bool qh_transfer_active(const qh_t *qh)
+{
+	assert(qh);
+	return (EHCI_MEM32_RD(qh->status) & QH_STATUS_ACTIVE_FLAG);
+}
+
 static inline bool qh_transfer_pending(const qh_t *qh)
 {
