diff --git a/Demos/Device/LowLevel/MassStorage/MassStorage.h b/Demos/Device/LowLevel/MassStorage/MassStorage.h
index c08e630c230f23b33df83c01e985278a27844cb1..08f3388a24bd11d6e9e761a0970ed893da81d292 100644
--- a/Demos/Device/LowLevel/MassStorage/MassStorage.h
+++ b/Demos/Device/LowLevel/MassStorage/MassStorage.h
@@ -90,7 +90,5 @@
 			static void ReturnCommandStatus(void);
 		#endif
 
-		uint8_t StreamCallback_AbortOnMassStoreReset(void);
-
 #endif
 
diff --git a/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c b/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c
index 9ce03400796514e24042c54f90b46e2b52d6f180..46b00636498f8c4ca8ada091ba35a7ae309995e8 100644
--- a/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c
+++ b/LUFA/Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c
@@ -53,16 +53,16 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
 		{
 			TEMPLATE_CLEAR_ENDPOINT();
 
+			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+			USB_USBTask();
+			#endif
+
 			if (BytesProcessed != NULL)
 			{
 				*BytesProcessed += BytesInTransfer;
 				return ENDPOINT_RWSTREAM_IncompleteTransfer;
 			}
 
-			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-			USB_USBTask();
-			#endif
-
 			if ((ErrorCode = Endpoint_WaitUntilReady()))
 			  return ErrorCode;
 		}
diff --git a/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c b/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c
index 9ce03400796514e24042c54f90b46e2b52d6f180..46b00636498f8c4ca8ada091ba35a7ae309995e8 100644
--- a/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c
+++ b/LUFA/Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c
@@ -53,16 +53,16 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
 		{
 			TEMPLATE_CLEAR_ENDPOINT();
 
+			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+			USB_USBTask();
+			#endif
+
 			if (BytesProcessed != NULL)
 			{
 				*BytesProcessed += BytesInTransfer;
 				return ENDPOINT_RWSTREAM_IncompleteTransfer;
 			}
 
-			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-			USB_USBTask();
-			#endif
-
 			if ((ErrorCode = Endpoint_WaitUntilReady()))
 			  return ErrorCode;
 		}
diff --git a/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c b/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c
index 9ce03400796514e24042c54f90b46e2b52d6f180..46b00636498f8c4ca8ada091ba35a7ae309995e8 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c
+++ b/LUFA/Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c
@@ -53,16 +53,16 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
 		{
 			TEMPLATE_CLEAR_ENDPOINT();
 
+			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
+			USB_USBTask();
+			#endif
+
 			if (BytesProcessed != NULL)
 			{
 				*BytesProcessed += BytesInTransfer;
 				return ENDPOINT_RWSTREAM_IncompleteTransfer;
 			}
 
-			#if !defined(INTERRUPT_CONTROL_ENDPOINT)
-			USB_USBTask();
-			#endif
-
 			if ((ErrorCode = Endpoint_WaitUntilReady()))
 			  return ErrorCode;
 		}
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index e41d288ef423f27dd16a4d2d57512e6df02b12c0..91aa6feb229295fc823985b5804213281ef6934f 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -68,6 +68,7 @@
   *     option was not enabled on the AVR8s
   *   - Fixed lack of C++ compatibility in some internal header files causing compile errors when using LUFA in C++ projects
   *   - Fixed error in the pipe unordered allocation algorithm for the AVR8 devices breaking compatibility with some devices
+  *   - Fixed USB_USBTask not being called internally in stream transfers between packets when Partial Stream Transfers are used
   *  - Library Applications:
   *   - Fixed incorrect signature in the CDC and DFU class bootloaders for the ATMEGA8U2
   *   - Fixed KeyboardHost and KeyboardHostWithParser demos displaying incorrect values when numerical keys were pressed