[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] memory: Directly dispatch alias accesses on origin memory
From: |
Paolo Bonzini |
Subject: |
Re: [PATCH v2] memory: Directly dispatch alias accesses on origin memory region |
Date: |
Sun, 30 Aug 2020 12:20:54 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 |
On 22/08/20 18:14, Philippe Mathieu-Daudé wrote:
> There is an issue when accessing an alias memory region via the
> memory_region_dispatch_read() / memory_region_dispatch_write()
> calls.
>
> Since commit 2cdfcf272d ("memory: assign MemoryRegionOps to all
> regions") we assign &unassigned_mem_ops to all MemoryRegions.
>
> The memory_region_init_alias() flow is:
>
> memory_region_init_alias()
> -> memory_region_init()
> -> object_initialize(TYPE_MEMORY_REGION)
> -> memory_region_initfn()
> -> mr->ops = &unassigned_mem_ops;
>
> When accessing the alias using memory_region_dispatch_read(),
> flow is:
>
> memory_region_dispatch_read()
> -> memory_region_access_valid(mr)
> -> mr->ops->valid.accepts()
> -> unassigned_mem_accepts()
> <- false
> <- false
> <- MEMTX_DECODE_ERROR
>
> The caller gets a MEMTX_DECODE_ERROR while the access is OK.
>
> Fix by directly dispatching aliases accesses to its origin region.
>
> Fixes: 2cdfcf272d ("memory: assign MemoryRegionOps to all regions")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
It's still not clear from the commit message what is the case where you
get this. I can integrate it in the commit message myself, but can you
explain it and/or link to a bug report?
Paolo