Re: [PATCH v6 2/6] x86/tdx: Support vmalloc() for tdx_enc_status_changed()

From: kirill . shutemov
Date: Tue May 23 2023 - 19:31:43 EST


On Tue, May 23, 2023 at 03:43:15PM -0700, Dave Hansen wrote:
> On 5/23/23 15:37, kirill.shutemov@xxxxxxxxxxxxxxx wrote:
> >> How does this work with load_unaligned_zeropad()? Couldn't it be
> >> running around poking at one of these vmalloc()'d pages via the direct
> >> map during a shared->private conversion before the page has been accepted?
> > Alias processing in __change_page_attr_set_clr() will change direct
> > mapping if you call it on vmalloc()ed memory. I think we are safe wrt
> > load_unaligned_zeropad() here.
>
> We're *eventually* OK:
>
> > /* Notify hypervisor that we are about to set/clr encryption attribute. */
> > x86_platform.guest.enc_status_change_prepare(addr, numpages, enc);
> >
> > ret = __change_page_attr_set_clr(&cpa, 1);
>
> But what about in the middle between enc_status_change_prepare() and
> __change_page_attr_set_clr()? Don't the direct map and the
> shared/private status of the page diverge in there?

Hmm. Maybe we would need to go through making the range in direct mapping
non-present before notifying VMM about the change.

I need to look at this again in the morning.

--
Kiryl Shutsemau / Kirill A. Shutemov