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