diff options
Diffstat (limited to 'drivers/xen/gntdev.c')
-rw-r--r-- | drivers/xen/gntdev.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c index d96d311b858..687761f65e5 100644 --- a/drivers/xen/gntdev.c +++ b/drivers/xen/gntdev.c | |||
@@ -358,17 +358,26 @@ static int unmap_grant_pages(struct grant_map *map, int offset, int pages) | |||
358 | 358 | ||
359 | /* ------------------------------------------------------------------ */ | 359 | /* ------------------------------------------------------------------ */ |
360 | 360 | ||
361 | static void gntdev_vma_open(struct vm_area_struct *vma) | ||
362 | { | ||
363 | struct grant_map *map = vma->vm_private_data; | ||
364 | |||
365 | pr_debug("gntdev_vma_open %p\n", vma); | ||
366 | atomic_inc(&map->users); | ||
367 | } | ||
368 | |||
361 | static void gntdev_vma_close(struct vm_area_struct *vma) | 369 | static void gntdev_vma_close(struct vm_area_struct *vma) |
362 | { | 370 | { |
363 | struct grant_map *map = vma->vm_private_data; | 371 | struct grant_map *map = vma->vm_private_data; |
364 | 372 | ||
365 | pr_debug("close %p\n", vma); | 373 | pr_debug("gntdev_vma_close %p\n", vma); |
366 | map->vma = NULL; | 374 | map->vma = NULL; |
367 | vma->vm_private_data = NULL; | 375 | vma->vm_private_data = NULL; |
368 | gntdev_put_map(map); | 376 | gntdev_put_map(map); |
369 | } | 377 | } |
370 | 378 | ||
371 | static struct vm_operations_struct gntdev_vmops = { | 379 | static struct vm_operations_struct gntdev_vmops = { |
380 | .open = gntdev_vma_open, | ||
372 | .close = gntdev_vma_close, | 381 | .close = gntdev_vma_close, |
373 | }; | 382 | }; |
374 | 383 | ||
@@ -680,7 +689,10 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma) | |||
680 | 689 | ||
681 | vma->vm_ops = &gntdev_vmops; | 690 | vma->vm_ops = &gntdev_vmops; |
682 | 691 | ||
683 | vma->vm_flags |= VM_RESERVED|VM_DONTCOPY|VM_DONTEXPAND|VM_PFNMAP; | 692 | vma->vm_flags |= VM_RESERVED|VM_DONTEXPAND; |
693 | |||
694 | if (use_ptemod) | ||
695 | vma->vm_flags |= VM_DONTCOPY|VM_PFNMAP; | ||
684 | 696 | ||
685 | vma->vm_private_data = map; | 697 | vma->vm_private_data = map; |
686 | 698 | ||