diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index c95a5e896251..1981ce61acd4 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -387,6 +387,10 @@ static int relinquish_walker(const struct kvm_pgtable_visit_ctx *ctx, if (!kvm_pte_valid(pte)) return 0; + /* We don't support splitting non-leaf mappings */ + if (ctx->level != (KVM_PGTABLE_MAX_LEVELS - 1)) + return 0; + state = pkvm_getstate(kvm_pgtable_stage2_pte_prot(pte)); if (state != data->expected_state) return -EPERM;