Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2065b372 authored by Izik Eidus's avatar Izik Eidus Committed by Avi Kivity
Browse files

KVM: MMU: Fix potential memory leak with smp real-mode



When we map a page, we check whether some other vcpu mapped it for us and if
so, bail out.  But we should decrease the refcount on the page as we do so.

Signed-off-by: default avatarIzik Eidus <izike@qumranet.com>
Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent 2d2a7b9c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -907,8 +907,10 @@ static int nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, hpa_t p)

			pte = table[index];
			was_rmapped = is_rmap_pte(pte);
			if (is_shadow_present_pte(pte) && is_writeble_pte(pte))
			if (is_shadow_present_pte(pte) && is_writeble_pte(pte)) {
				kvm_release_page(pfn_to_page(p >> PAGE_SHIFT));
				return 0;
			}
			mark_page_dirty(vcpu->kvm, v >> PAGE_SHIFT);
			page_header_update_slot(vcpu->kvm, table, v);
			table[index] = p | PT_PRESENT_MASK | PT_WRITABLE_MASK |