[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v2 5/5] softmmu/physmem: Have flaview API check MemTxAttr
From: |
Stefan Hajnoczi |
Subject: |
Re: [RFC PATCH v2 5/5] softmmu/physmem: Have flaview API check MemTxAttrs::bus_perm field |
Date: |
Tue, 24 Aug 2021 14:15:33 +0100 |
On Mon, Aug 23, 2021 at 06:41:57PM +0200, Philippe Mathieu-Daudé wrote:
> Check bus permission in flatview_access_allowed() before
> running any bus transaction.
>
> There is not change for the default case (MEMTXPERM_UNSPECIFIED).
>
> The MEMTXPERM_UNRESTRICTED case works as an allow list. Devices
> using it won't be checked by flatview_access_allowed().
>
> The only deny list equivalent is MEMTXPERM_RAM_DEVICE: devices
> using this flag will reject transactions and set the optional
> MemTxResult to MEMTX_BUS_ERROR.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> softmmu/physmem.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/softmmu/physmem.c b/softmmu/physmem.c
> index 0d31a2f4199..329542dba75 100644
> --- a/softmmu/physmem.c
> +++ b/softmmu/physmem.c
> @@ -2772,7 +2772,22 @@ static inline bool
> flatview_access_allowed(MemoryRegion *mr, MemTxAttrs attrs,
> hwaddr addr, hwaddr len,
> MemTxResult *result)
> {
> - return true;
> + if (unlikely(attrs.bus_perm == MEMTXPERM_RAM_DEVICE)) {
> + if (memory_region_is_ram(mr) || memory_region_is_ram_device(mr)) {
> + return true;
> + }
> + qemu_log_mask(LOG_GUEST_ERROR,
> + "Invalid access to non-RAM device at "
> + "addr 0x%" HWADDR_PRIX ", size %" HWADDR_PRIu ", "
> + "region '%s'\n", addr, len, memory_region_name(mr));
> + if (result) {
> + *result |= MEMTX_BUS_ERROR;
Why bitwise OR?
> + }
> + return false;
> + } else {
> + /* MEMTXPERM_UNRESTRICTED and MEMTXPERM_UNSPECIFIED cases */
> + return true;
> + }
> }
>
> /* Called within RCU critical section. */
> --
> 2.31.1
>
signature.asc
Description: PGP signature
- Re: [RFC PATCH v2 3/5] exec/memattrs: Introduce MemTxAttrs::bus_perm field, (continued)
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Peter Maydell, 2021/08/23
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Peter Xu, 2021/08/23
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Peter Maydell, 2021/08/24
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Gerd Hoffmann, 2021/08/24
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Li Qiang, 2021/08/24
- Re: [RFC PATCH v2 0/5] physmem: Have flaview API check bus permission from MemTxAttrs argument, Peter Xu, 2021/08/24