@samitouri / QOSamiQemu / commits / c1d5ec3a2f

hw/riscv/riscv-iommu.c: check for reserved PTE bits

We need to fault if reserved PTE bits (60:54) are set. Fixes: 0c54acb8243d ("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>

Daniel Henrique Barboza committed Jul 1, 2026 at 09:11 UTC c1d5ec3a2f4bbc9fdc120ba5697e8ad89e682e45
1 file changed +2
hw/riscv/riscv-iommu.c
+2
@@ -469,6 +469,8 @@ static int riscv_iommu_spa_fetch(RISCVIOMMUState *s, RISCVIOMMUContext *ctx,
469
470 if (!(pte & PTE_V)) {
471 break; /* Invalid PTE */
472 + } else if (pte & PTE_RESERVED(false)) {
473 + break; /* Reserved PTE bits set */
474 } else if (!(pte & (PTE_R | PTE_W | PTE_X))) {
475 base = PPN_PHYS(ppn); /* Inner PTE, continue walking */
476 } else if ((pte & (PTE_R | PTE_W | PTE_X)) == PTE_W) {