summaryrefslogtreecommitdiffstats
path: root/patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff')
-rw-r--r--patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff48
1 files changed, 0 insertions, 48 deletions
diff --git a/patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff b/patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff
deleted file mode 100644
index a1514ad..0000000
--- a/patches/qemu-2.9.0/0001-hw-sd-fix-out-of-bounds-check-for-multi-block-reads.diff
+++ /dev/null
@@ -1,48 +0,0 @@
-hw/sd: fix out-of-bounds check for multi block reads
-
-The current code checks if the next block exceeds the size of the card.
-This generates an error while reading the last block of the card.
-Do the out-of-bounds check when starting to read a new block to fix this.
-
-This issue became visible with increased error checking in Linux 4.13.
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
----
- hw/sd/sd.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/hw/sd/sd.c b/hw/sd/sd.c
-index ba47bff4db80..35347a5bbcde 100644
---- a/hw/sd/sd.c
-+++ b/hw/sd/sd.c
-@@ -1797,8 +1797,13 @@ uint8_t sd_read_data(SDState *sd)
- break;
-
- case 18: /* CMD18: READ_MULTIPLE_BLOCK */
-- if (sd->data_offset == 0)
-+ if (sd->data_offset == 0) {
-+ if (sd->data_start + io_len > sd->size) {
-+ sd->card_status |= ADDRESS_ERROR;
-+ return 0x00;
-+ }
- BLK_READ_BLOCK(sd->data_start, io_len);
-+ }
- ret = sd->data[sd->data_offset ++];
-
- if (sd->data_offset >= io_len) {
-@@ -1812,11 +1817,6 @@ uint8_t sd_read_data(SDState *sd)
- break;
- }
- }
--
-- if (sd->data_start + io_len > sd->size) {
-- sd->card_status |= ADDRESS_ERROR;
-- break;
-- }
- }
- break;
-
---
-2.14.2
-
-