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