Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 340e01248478ba8b78a6d4d1809b1eff > files > 170

kvm-83-270.el5_11.src.rpm

From 61a9ee21e4d477ecfaba2b3d038195762a58de0a Mon Sep 17 00:00:00 2001
From: Izik Eidus <ieidus@redhat.com>
Date: Tue, 14 Apr 2009 19:29:14 +0300
Subject: [PATCH 09/11] KSM: fix bug 495348

we add a check for the !vm_file to be sure we are not dealing with file backed
pages!

Signed-off-by: Izik Eidus <ieidus@redhat.com>
Message-Id: <1239726558-14362-2-git-send-email-ieidus@redhat.com>
Message-Id: <1239808529-22398-2-git-send-email-ieidus@redhat.com>
Message-Id: <1240106904-21687-2-git-send-email-ieidus@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com
RH-Upstream-status: pending
Acked-by: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: "Michael S. Tsirkin" <mst@redhat.com>
Acked-by: john cooper <john.cooper@redhat.com>
Bugzilla: 497886
---
 kernel/ksm/ksm_main.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/kernel/ksm/ksm_main.c b/kernel/ksm/ksm_main.c
index 8d1fb20..ea0f441 100644
--- a/kernel/ksm/ksm_main.c
+++ b/kernel/ksm/ksm_main.c
@@ -642,12 +642,18 @@ static int is_zapped_item(struct rmap_item *rmap_item,
 			  struct page **page)
 {
 	int ret = 0;
+	struct vm_area_struct *vma;
 
 	cond_resched();
 	if (is_present_pte(rmap_item->mm, rmap_item->address)) {
 		down_read(&rmap_item->mm->mmap_sem);
-		ret = get_user_pages(current, rmap_item->mm, rmap_item->address,
-				     1, 0, 0, page, NULL);
+		vma = find_vma(rmap_item->mm, rmap_item->address);
+		if (vma && !vma->vm_file) {
+			BUG_ON(vma->vm_flags & VM_SHARED);
+			ret = get_user_pages(current, rmap_item->mm,
+					     rmap_item->address,
+					     1, 0, 0, page, NULL);
+		}
 		up_read(&rmap_item->mm->mmap_sem);
 	}
 
-- 
1.6.1