diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.c b/LUFA/Drivers/USB/Class/Device/MassStorage.c
index 45d011224e691f65b736913a11e582addca4cb1d..9d5ff7d208985dfc646c1a487624c8bf5c44d047 100644
--- a/LUFA/Drivers/USB/Class/Device/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Device/MassStorage.c
@@ -202,6 +202,10 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
 
 	while (Endpoint_IsStalled())
 	{
+		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+		USB_USBTask();
+		#endif
+
 		if (MSInterfaceInfo->State.IsMassStoreReset)
 		  return;
 	}
@@ -210,6 +214,10 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
 
 	while (Endpoint_IsStalled())
 	{
+		#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+		USB_USBTask();
+		#endif
+
 		if (MSInterfaceInfo->State.IsMassStoreReset)
 		  return;
 	}