From 5c41ce52271e66305fec33a5a4c4dd53e6259a80 Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Tue, 26 Apr 2022 09:29:17 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Donate memory to protected guests Instead of sharing memory with protected guests, which still leaves the host with r/w access, donate the underlying pages so that they are unmapped from the host stage-2. Signed-off-by: Marc Zyngier Signed-off-by: Will Deacon Bug: 233587962 Change-Id: I3e0d1d31877acf3978e82350ebbe92136919507c --- arch/arm64/kvm/hyp/nvhe/hyp-main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c index 5931951eb374..15f053d6848c 100644 --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c @@ -457,7 +457,10 @@ static void handle___pkvm_host_map_guest(struct kvm_cpu_context *host_ctxt) if (ret) goto out; - ret = __pkvm_host_share_guest(pfn, gfn, hyp_vcpu); + if (pkvm_hyp_vcpu_is_protected(hyp_vcpu)) + ret = __pkvm_host_donate_guest(pfn, gfn, hyp_vcpu); + else + ret = __pkvm_host_share_guest(pfn, gfn, hyp_vcpu); out: cpu_reg(host_ctxt, 1) = ret; }