summaryrefslogtreecommitdiffstats
path: root/hw/sd
diff options
context:
space:
mode:
authorBin Meng2021-02-16 16:02:18 +0100
committerPhilippe Mathieu-Daudé2021-02-20 00:17:09 +0100
commit64ea2d9f74a824269f2f564632bda52d60ae9243 (patch)
tree216c5195a6a0d1ae3c2c832a2635b92a739e6b82 /hw/sd
parenthw/sd: ssi-sd: Handle the rest commands with R1b response type (diff)
downloadqemu-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.c2
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;