Also consider the requested transaction size when generating the access mask (so that only the requested bytes are returned when those are less than the memory region's minimum access size).
Signed-off-by: Francisco Iglesias <frasse.igles...@gmail.com> --- memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory.c b/memory.c index 5d8c9a9234..56a2510836 100644 --- a/memory.c +++ b/memory.c @@ -563,7 +563,7 @@ static MemTxResult access_with_adjusted_size(hwaddr addr, /* FIXME: support unaligned access? */ access_size = MAX(MIN(size, access_size_max), access_size_min); - access_mask = MAKE_64BIT_MASK(0, access_size * 8); + access_mask = MAKE_64BIT_MASK(0, MIN(size, access_size) * 8); if (memory_region_big_endian(mr)) { for (i = 0; i < size; i += access_size) { r |= access_fn(mr, addr + i, value, access_size, -- 2.11.0