diff --git a/src/flash/stm32x.c b/src/flash/stm32x.c
index e85c0e5a715ee2815e21665fe84acf37de21c6c4..25a9b0da3d7c605dabbe3df1634f91e960034e89 100644
--- a/src/flash/stm32x.c
+++ b/src/flash/stm32x.c
@@ -627,7 +627,12 @@ int stm32x_probe(struct flash_bank_s *bank)
     }
     
 	/* get flash size from target */
-	target_read_u16(target, 0x1FFFF7E0, &num_sectors);
+	if (target_read_u16(target, 0x1FFFF7E0, &num_sectors) != ERROR_OK)
+	{
+		/* failed reading flash size, default to 128k */
+		LOG_WARNING( "STM32 flash size failed, probe inaccurate - assuming 128k flash" );
+		num_sectors = 128;
+	}
 	
 	/* check for early silicon rev A */
 	if ((device_id >> 16) == 0 )