Re: [PATCH v3 4/6] arm64/kvm: Avoid invalid physical addresses to signal owner updates
From: Quentin Perret
Date: Thu Dec 12 2024 - 07:27:21 EST
On Thursday 12 Dec 2024 at 12:44:38 (+0100), Ard Biesheuvel wrote:
> On Thu, 12 Dec 2024 at 12:33, Quentin Perret <qperret@xxxxxxxxxx> wrote:
> >
> > On Thursday 12 Dec 2024 at 09:18:46 (+0100), Ard Biesheuvel wrote:
> > > @@ -908,6 +892,9 @@ static bool stage2_leaf_mapping_allowed(const struct kvm_pgtable_visit_ctx *ctx,
> > > if (data->force_pte && ctx->level < KVM_PGTABLE_LAST_LEVEL)
> > > return false;
> > >
> > > + if (data->annotation && ctx->level == KVM_PGTABLE_LAST_LEVEL)
> > > + return true;
> > > +
> >
> > I don't think it's a problem, but what's the rationale for checking
> > ctx->level here? The data->force_pte logic should already do this for us
> > and be somewhat orthogonal to data->annotation, no?
> >
>
> So you are saying this could be
>
> > > + if (data->annotation)
> > > + return true;
>
> right?
Yep, exactly.
> That hides the fact that we expect data->annotation to imply
> data->force_pte, but other than that, it should work the same, yes.
Eventually we'll want to make the two orthogonal to each other (e.g. to
annotate blocks when donating huge pages to protected guests), but
that'll require more work so again I don't mind that check in the
current code. We can always get rid of it when annotations on blocks
are supported.
Cheers,
Quentin