hw/riscv/riscv-iommu.c: check for reserved PTE bits
We need to fault if reserved PTE bits (60:54) are set.
Fixes: 0c54acb824 ("hw/riscv: add RISC-V IOMMU base emulation")
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3554
Signed-off-by: Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>
Reviewed-by: Nutty Liu <nutty.liu@hotmail.com>
Reviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>
Message-ID: <20260701121111.537654-2-daniel.barboza@oss.qualcomm.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
committed by
Alistair Francis
parent
b18e3f0e2d
commit
c1d5ec3a2f
@@ -469,6 +469,8 @@ static int riscv_iommu_spa_fetch(RISCVIOMMUState *s, RISCVIOMMUContext *ctx,
|
||||
|
||||
if (!(pte & PTE_V)) {
|
||||
break; /* Invalid PTE */
|
||||
} else if (pte & PTE_RESERVED(false)) {
|
||||
break; /* Reserved PTE bits set */
|
||||
} else if (!(pte & (PTE_R | PTE_W | PTE_X))) {
|
||||
base = PPN_PHYS(ppn); /* Inner PTE, continue walking */
|
||||
} else if ((pte & (PTE_R | PTE_W | PTE_X)) == PTE_W) {
|
||||
|
||||
Reference in New Issue
Block a user