[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] linux/blktap: fix blktap_clear_pte().



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1241526775 -3600
# Node ID 42dfb4e2bce075458446970be280f03d151db0f2
# Parent  978499ee4f39e277c9617f0aef5e34ea5ef40bf9
linux/blktap: fix blktap_clear_pte().

fix blktap_clear_pte(). In case of vma->vm_file == NULL
case wasn't handled correctly.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 drivers/xen/blktap/blktap.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff -r 978499ee4f39 -r 42dfb4e2bce0 drivers/xen/blktap/blktap.c
--- a/drivers/xen/blktap/blktap.c       Tue Apr 28 13:44:22 2009 +0100
+++ b/drivers/xen/blktap/blktap.c       Tue May 05 13:32:55 2009 +0100
@@ -314,7 +314,7 @@ static pte_t blktap_clear_pte(struct vm_
        pte_t copy;
        tap_blkif_t *info = NULL;
        int offset, seg, usr_idx, pending_idx, mmap_idx;
-       unsigned long uvstart;
+       unsigned long uvstart = 0;
        unsigned long kvaddr;
        struct page *pg;
        struct grant_handle_pair *khandle;
@@ -328,9 +328,8 @@ static pte_t blktap_clear_pte(struct vm_
        if (vma->vm_file != NULL) {
                info = vma->vm_file->private_data;
                uvstart = info->rings_vstart + (RING_PAGES << PAGE_SHIFT);
-       } else
-               uvstart = uvaddr;       /* make the following if clause true */
-       if (uvaddr < uvstart)
+       }
+       if (vma->vm_file == NULL || uvaddr < uvstart)
                return ptep_get_and_clear_full(vma->vm_mm, uvaddr, 
                                               ptep, is_fullmm);
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.