mm: Introduce AS_INACCESSIBLE for encrypted/confidential memory
authorMichael Roth <michael.roth@amd.com>
Fri, 29 Mar 2024 21:24:42 +0000 (16:24 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 10 May 2024 17:11:45 +0000 (13:11 -0400)
commitc72ceafbd12cf95e088681ae5e535ef1a78bf0ed
tree1a877f9fb40103dac7fd20abf4fda3f3661ed3ae
parent2b1f435505aee67094a9427ebc27ac04842d9f95
mm: Introduce AS_INACCESSIBLE for encrypted/confidential memory

filemap users like guest_memfd may use page cache pages to
allocate/manage memory that is only intended to be accessed by guests
via hardware protections like encryption. Writes to memory of this sort
in common paths like truncation may cause unexpected behavior such as
writing garbage instead of zeros when attempting to zero pages, or
worse, triggering hardware protections that are considered fatal as far
as the kernel is concerned.

Introduce a new address_space flag, AS_INACCESSIBLE, and use this
initially to prevent zero'ing of pages during truncation, with the
understanding that it is up to the owner of the mapping to handle this
specially if needed.

This is admittedly a rather blunt solution, but it seems like
there are no other places that should take into account the
flag to keep its promise.

Link: https://lore.kernel.org/lkml/ZR9LYhpxTaTk6PJX@google.com/
Cc: Matthew Wilcox <willy@infradead.org>
Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Michael Roth <michael.roth@amd.com>
Message-ID: <20240329212444.395559-5-michael.roth@amd.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
include/linux/pagemap.h
mm/truncate.c