From f94aa2ed73b8378922261381bef2d25d25ca2223 Mon Sep 17 00:00:00 2001 From: Izik Eidus Date: Thu, 20 Mar 2008 18:17:24 +0200 Subject: [PATCH] --- yaml --- r: 93835 b: refs/heads/master c: 855149aaa90016c576a0e684361a34f8047307d0 h: refs/heads/master i: 93833: c51ae9e9a88dc9c359376c3d780fdd96cd67fcfb 93831: 5527233db7f7d989f0bc7459c23869ed08f5ad62 v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/mmu.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c32958f2f908..3d81affd9142 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 69a9f69bb24d6d3dbf3d2ba542ddceeda40536d5 +refs/heads/master: 855149aaa90016c576a0e684361a34f8047307d0 diff --git a/trunk/arch/x86/kvm/mmu.c b/trunk/arch/x86/kvm/mmu.c index a5872b3c466d..dd4b95b3896b 100644 --- a/trunk/arch/x86/kvm/mmu.c +++ b/trunk/arch/x86/kvm/mmu.c @@ -626,6 +626,14 @@ static void rmap_write_protect(struct kvm *kvm, u64 gfn) } spte = rmap_next(kvm, rmapp, spte); } + if (write_protected) { + struct page *page; + + spte = rmap_next(kvm, rmapp, NULL); + page = pfn_to_page((*spte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT); + SetPageDirty(page); + } + /* check for huge page mappings */ rmapp = gfn_to_rmap(kvm, gfn, 1); spte = rmap_next(kvm, rmapp, NULL);