+-- On Tue, 1 Sep 2020, Philippe Mathieu-Daudé wrote --+ | The 'Transfer Block Size' field is 12-bit wide. | See section '2.2.2. Block Size Register (Offset 004h)' in datasheet. | | Buglink: https://bugs.launchpad.net/qemu/+bug/1892960 + https://ruhr-uni-bochum.sciebo.de/s/NNWP2GfwzYKeKwE?path=%2Fsdhci_oob_write1 | diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c | index 60f083b84c1..ecbf84e9d3f 100644 | --- a/hw/sd/sdhci.c | +++ b/hw/sd/sdhci.c | @@ -1104,7 +1104,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) | break; | case SDHC_BLKSIZE: | if (!TRANSFERRING_DATA(s->prnsts)) { | - MASKED_WRITE(s->blksize, mask, value); | + MASKED_WRITE(s->blksize, mask, extract32(value, 0, 12)); | MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16); It helps to fix above issues. Reviewed-by: Prasad J Pandit Thank you. -- Prasad J Pandit / Red Hat Product Security Team 8685 545E B54C 486B C6EB 271E E285 8B5A F050 DE8D