Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision 952bc668192e6b7eb974e8cbf0c3d5ed0383b87f)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision ad5f149040be22d66fbbd2e85465aee6e550513b)
@@ -162,9 +162,8 @@
 		    &instance->transfers_bulk_full, &done);
 
-		while (!list_empty(&done)) {
-			link_t *item = list_first(&done);
-			list_remove(item);
+		list_foreach_safe(done, current, next) {
+			list_remove(current);
 			uhci_transfer_batch_t *batch =
-			    uhci_transfer_batch_from_link(item);
+			    uhci_transfer_batch_from_link(current);
 			uhci_transfer_batch_finish_dispose(batch);
 		}
Index: uspace/drv/bus/usb/uhci/uhci_batch.c
===================================================================
--- uspace/drv/bus/usb/uhci/uhci_batch.c	(revision 952bc668192e6b7eb974e8cbf0c3d5ed0383b87f)
+++ uspace/drv/bus/usb/uhci/uhci_batch.c	(revision ad5f149040be22d66fbbd2e85465aee6e550513b)
@@ -70,4 +70,5 @@
 	assert(uhci_batch);
 	assert(uhci_batch->usb_batch);
+	assert(!link_in_use(&uhci_batch->link));
 	usb_transfer_batch_finish(uhci_batch->usb_batch,
 	    uhci_transfer_batch_data_buffer(uhci_batch));
