WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] linux c/s 866

To: Jan Beulich <jbeulich@xxxxxxxxxx>
Subject: Re: [Xen-devel] linux c/s 866
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Tue, 5 May 2009 01:23:27 +0900
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 04 May 2009 09:23:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <49FECE09.76EA.0078.0@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <49FECE09.76EA.0078.0@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.6i
On Mon, May 04, 2009 at 10:14:17AM +0100, Jan Beulich wrote:
> >@@ -329,11 +329,15 @@ static pte_t blktap_clear_pte(struct vm_
> >      * If the address is before the start of the grant mapped region or
> >      * if vm_file is NULL (meaning mmap failed and we have nothing to do)
> >      */
> >-    if (uvaddr < uvstart || vma->vm_file == NULL)
> >+    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)
> >             return ptep_get_and_clear_full(vma->vm_mm, uvaddr, 
> >                                            ptep, is_fullmm);
> 
> It would appear to me as if the comment and the code are out of sync:
> Assigning uvaddr to uvstart makes the if clause's condition false whenever
> vm->vm_file == NULL. According to how the old code worked, I'd say the
> code needs to be fixed, but I'm not certain, hence I'm hesitant to submit a
> patch...

You're quite right. Thank you for pointing out.


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>

diff --git a/drivers/xen/blktap/blktap.c b/drivers/xen/blktap/blktap.c
--- a/drivers/xen/blktap/blktap.c
+++ b/drivers/xen/blktap/blktap.c
@@ -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);
 

-- 
yamahata

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

<Prev in Thread] Current Thread [Next in Thread>