{\r
        uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;\r
 \r
-       /* Unfreeze the OUT pipe so that it can be checked */\r
-       Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
-       Pipe_Unfreeze();\r
-\r
        /* Select the IN data pipe for data reception */\r
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
        Pipe_Unfreeze();\r
                          return PIPE_RWSTREAM_Timeout;\r
                }\r
        \r
+               Pipe_Freeze();\r
                Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
+               Pipe_Unfreeze();\r
 \r
                /* Check if pipe stalled (command failed by device) */\r
                if (Pipe_IsStalled())\r
 \r
                        return PIPE_RWSTREAM_PipeStalled;\r
                }\r
-\r
+               \r
+               Pipe_Freeze();\r
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
+               Pipe_Unfreeze();\r
 \r
                /* Check if pipe stalled (command failed by device) */\r
                if (Pipe_IsStalled())\r
                if (!(USB_IsConnected))\r
                  return PIPE_RWSTREAM_DeviceDisconnected;\r
        };\r
+       \r
+       Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);\r
+       Pipe_Freeze();\r
+               \r
+       Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);\r
+       Pipe_Freeze();\r
 \r
        return PIPE_RWSTREAM_NoError;\r
 }\r