From 4f0f3dfb410062db4d41e42c2c7cff6c8b48f071 Mon Sep 17 00:00:00 2001 From: Jeremy Herbert Date: Mon, 4 Nov 2019 01:25:16 -0800 Subject: [PATCH] drivers/sdcard: Raise exception on timeout of readinto. Otherwise the code can get stuck in an infinite loop if the SD card fails to respond to a read. --- drivers/sdcard/sdcard.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/sdcard/sdcard.py b/drivers/sdcard/sdcard.py index ffc551d9ae..fc67875566 100644 --- a/drivers/sdcard/sdcard.py +++ b/drivers/sdcard/sdcard.py @@ -172,10 +172,13 @@ class SDCard: self.cs(0) # read until start byte (0xff) - while True: + for i in range(_CMD_TIMEOUT): self.spi.readinto(self.tokenbuf, 0xff) if self.tokenbuf[0] == _TOKEN_DATA: break + else: + self.cs(1) + raise OSError("timeout waiting for response") # read data mv = self.dummybuf_memoryview