Index: uspace/drv/bus/usb/xhci/trb_ring.c
===================================================================
--- uspace/drv/bus/usb/xhci/trb_ring.c	(revision a1732929ba941aba7936eef2d1f299b1f423d3b5)
+++ uspace/drv/bus/usb/xhci/trb_ring.c	(revision 9ff99e84ceb43ab4c2a41ccfce682c462117c5cf)
@@ -194,4 +194,5 @@
 	size_t trbs, uintptr_t *phys)
 {
+	int err;
 	assert(trbs > 0);
 	fibril_mutex_lock(&ring->guard);
@@ -209,6 +210,8 @@
 	for (size_t i = 0; i < trbs; ++i, ++trb) {
 		if (phys && trb_generates_interrupt(trb)) {
-			if (*phys)
-				return ENOTSUP;
+			if (*phys) {
+				err = ENOTSUP;
+				goto err;
+			}
 			*phys = trb_ring_enqueue_phys(ring);
 		}
@@ -219,6 +222,8 @@
 			trb_ring_resolve_link(ring);
 
-		if (trb_ring_enqueue_phys(ring) == ring->dequeue)
-			goto err_again;
+		if (trb_ring_enqueue_phys(ring) == ring->dequeue) {
+			err = EAGAIN;
+			goto err;
+		}
 	}
 
@@ -252,9 +257,9 @@
 	return EOK;
 
-err_again:
+err:
 	ring->enqueue_segment = saved_enqueue_segment;
 	ring->enqueue_trb = saved_enqueue_trb;
 	fibril_mutex_unlock(&ring->guard);
-	return EAGAIN;
+	return err;
 }
 
