Index: uspace/drv/bus/usb/xhci/transfers.c
===================================================================
--- uspace/drv/bus/usb/xhci/transfers.c	(revision d08aa42deffdaca09f91f19ec06efda43981d394)
+++ uspace/drv/bus/usb/xhci/transfers.c	(revision 7d5287db5239660e1f3d8abaa08e3ad7886a367c)
@@ -468,6 +468,17 @@
 				 * possible that we have to clear all of them.
 				 */
-				xhci_endpoint_clear_halt(xhci_endpoint_get(halted_ep), 0);
+				const int err = xhci_endpoint_clear_halt(xhci_endpoint_get(halted_ep), 0);
 				endpoint_del_ref(halted_ep);
+				if (err) {
+					/*
+					 * The endpoint halt condition failed to be cleared in HC.
+					 * As it does not make sense to send the reset to the device
+					 * itself, return as unschedulable answer.
+					 *
+					 * Furthermore, if this is a request to clear EP 0 stall, it
+					 * would be gone forever, as the endpoint is halted.
+					 */
+					return err;
+				}
 			} else {
 				usb_log_warning("Device(%u): Resetting unregistered endpoint"
