xen-gntdev: Use map->vma for checking map validity
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>
Wed, 9 Feb 2011 20:11:59 +0000 (15:11 -0500)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Mon, 14 Feb 2011 19:16:20 +0000 (14:16 -0500)
The is_mapped flag used to be set at the completion of the map operation,
but was not checked in all error paths. Use map->vma instead, which will
now be cleared if the initial grant mapping fails.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/xen/gntdev.c

index 75f8037..4ca4262 100644 (file)
@@ -77,7 +77,6 @@ struct grant_map {
        int index;
        int count;
        int flags;
-       int is_mapped;
        atomic_t users;
        struct unmap_notify notify;
        struct ioctl_gntdev_grant_ref *grants;
@@ -322,7 +321,6 @@ static void gntdev_vma_close(struct vm_area_struct *vma)
        struct grant_map *map = vma->vm_private_data;
 
        pr_debug("close %p\n", vma);
-       map->is_mapped = 0;
        map->vma = NULL;
        vma->vm_private_data = NULL;
        gntdev_put_map(map);
@@ -347,8 +345,6 @@ static void mn_invl_range_start(struct mmu_notifier *mn,
        list_for_each_entry(map, &priv->maps, next) {
                if (!map->vma)
                        continue;
-               if (!map->is_mapped)
-                       continue;
                if (map->vma->vm_start >= end)
                        continue;
                if (map->vma->vm_end <= start)
@@ -663,8 +659,6 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
        if (err)
                goto out_put_map;
 
-       map->is_mapped = 1;
-
        if (!use_ptemod) {
                for (i = 0; i < count; i++) {
                        err = vm_insert_page(vma, vma->vm_start + i*PAGE_SIZE,
@@ -681,6 +675,8 @@ unlock_out:
        return err;
 
 out_put_map:
+       if (use_ptemod)
+               map->vma = NULL;
        gntdev_put_map(map);
        return err;
 }