From: Bin Meng Date: Tue, 16 Feb 2021 15:02:18 +0000 (+0800) Subject: hw/sd: sd: Fix address check in sd_erase() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=64ea2d9f74a824269f2f564632bda52d60ae9243;p=qemu.git 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 Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210216150225.27996-2-bmeng.cn@gmail.com> Signed-off-by: Philippe Mathieu-Daudé --- 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;