Re: [PATCH 2/4] x86, cpa: Map in an arbitrary pgd

Matt Fleming
2013-06-06T13:30:23Z

On Thu, 06 Jun, at 03:24:06PM, Borislav Petkov wrote:
> On Thu, Jun 06, 2013 at 11:22:33AM +0100, Matt Fleming wrote:
> > > @@ -697,7 +714,10 @@ static int __change_page_attr(struct cpa_data *cpa, int primary)
> > > else
> > > address = *cpa->vaddr;
> > > repeat:
> > > - kpte = lookup_address(address, &level);
> > > + if (cpa->pgd)
> > > + kpte = __lookup_address_in_pgd(cpa->pgd, address, &level);
> > > + else
> > > + kpte = _lookup_address_cpa(cpa, address, &level);
> >
> > Don't you also need to initialise .pgd in __set_pages_p() and
> > __set_pages_np()?
>
> Hmm, I don't think so. The idea is to leave the current functionality in
> pageattr.c untouched. Currently, it maps PTEs in init_mm.pgd by default
> because this is the kernel PGD.

I meant because the .pgd member is uninitialised and contains garbage.

--
Matt Fleming, Intel Open Source Technology Center