diff --git a/Marlin/Sd2Card.cpp b/Marlin/Sd2Card.cpp
index 6683e4b4fda..86c5cd9b7cb 100644
--- a/Marlin/Sd2Card.cpp
+++ b/Marlin/Sd2Card.cpp
@@ -405,21 +405,22 @@ bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) {
       else if (readData(dst, 512))
         return true;
 
+      chipSelectHigh();
       if (!--retryCnt) break;
 
-      chipSelectHigh();
       cardCommand(CMD12, 0); // Try sending a stop command, ignore the result.
       errorCode_ = 0;
     }
+    return false;
   #else
-    if (cardCommand(CMD17, blockNumber))
+    if (cardCommand(CMD17, blockNumber)) {
       error(SD_CARD_ERROR_CMD17);
+      chipSelectHigh();
+      return false;
+    }
     else
       return readData(dst, 512);
   #endif
-
-  chipSelectHigh();
-  return false;
 }
 
 /**