Message ID | 20210128064312.16085-2-bmeng.cn@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | hw/sd: sd: erase operation fixes | expand |
On 1/28/21 7:43 AM, Bin Meng wrote: > From: Bin Meng <bin.meng@windriver.com> > > 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}. Oops, good catch. Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > > Fixes: 1bd6fd8ed593 ("hw/sd/sdcard: Do not attempt to erase out of range addresses") > Signed-off-by: Bin Meng <bin.meng@windriver.com> > --- > > hw/sd/sd.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c index c99c0e93bb..a6a0b3dcc6 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;