|
@@ -3807,6 +3807,14 @@ static bool try_async_pf(struct kvm_vcpu *vcpu, bool prefault, gfn_t gfn,
|
|
|
struct kvm_memory_slot *slot;
|
|
|
bool async;
|
|
|
|
|
|
+ /*
|
|
|
+ * Don't expose private memslots to L2.
|
|
|
+ */
|
|
|
+ if (is_guest_mode(vcpu) && !kvm_is_visible_gfn(vcpu->kvm, gfn)) {
|
|
|
+ *pfn = KVM_PFN_NOSLOT;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn);
|
|
|
async = false;
|
|
|
*pfn = __gfn_to_pfn_memslot(slot, gfn, false, &async, write, writable);
|