diff options
author | Bin Meng | 2021-02-16 16:02:18 +0100 |
---|---|---|
committer | Philippe Mathieu-Daudé | 2021-02-20 00:17:09 +0100 |
commit | 64ea2d9f74a824269f2f564632bda52d60ae9243 (patch) | |
tree | 216c5195a6a0d1ae3c2c832a2635b92a739e6b82 /hw/sd | |
parent | hw/sd: ssi-sd: Handle the rest commands with R1b response type (diff) | |
download | qemu-64ea2d9f74a824269f2f564632bda52d60ae9243.tar.gz qemu-64ea2d9f74a824269f2f564632bda52d60ae9243.tar.xz qemu-64ea2d9f74a824269f2f564632bda52d60ae9243.zip |
hw/sd: sd: Fix address check in sd_erase()
For high capacity memory cards, the erase start address and end
address are multiplied by 512, but the address check is still
based on the original block number in sd->erase_{start, end}.
Fixes: 1bd6fd8ed593 ("hw/sd/sdcard: Do not attempt to erase out of range addresses")
Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210216150225.27996-2-bmeng.cn@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Diffstat (limited to 'hw/sd')
-rw-r--r-- | hw/sd/sd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 172e83f99d..7adcb4edfa 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -760,7 +760,7 @@ static void sd_erase(SDState *sd) erase_end *= 512; } - if (sd->erase_start > sd->size || sd->erase_end > sd->size) { + if (erase_start > sd->size || erase_end > sd->size) { sd->card_status |= OUT_OF_RANGE; sd->erase_start = INVALID_ADDRESS; sd->erase_end = INVALID_ADDRESS; |