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

[Xen-devel] [PATCH] xen/gntdev: Do not use mm notifiers with autotranslating guests



Commit d3eeb1d77c5d ("xen/gntdev: use mmu_interval_notifier_insert")
missed a test for use_ptemod when calling mmu_interval_read_begin(). Fix
that.

Fixes: d3eeb1d77c5d ("xen/gntdev: use mmu_interval_notifier_insert")
CC: stable@xxxxxxxxxxxxxxx # 5.5
Reported-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxx>
Tested-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxx>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
---
 drivers/xen/gntdev.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
index 4fc83e3f5ad3..0258415ca0b2 100644
--- a/drivers/xen/gntdev.c
+++ b/drivers/xen/gntdev.c
@@ -1006,19 +1006,19 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
        }
        mutex_unlock(&priv->lock);
 
-       /*
-        * gntdev takes the address of the PTE in find_grant_ptes() and passes
-        * it to the hypervisor in gntdev_map_grant_pages(). The purpose of
-        * the notifier is to prevent the hypervisor pointer to the PTE from
-        * going stale.
-        *
-        * Since this vma's mappings can't be touched without the mmap_sem,
-        * and we are holding it now, there is no need for the notifier_range
-        * locking pattern.
-        */
-       mmu_interval_read_begin(&map->notifier);
-
        if (use_ptemod) {
+               /*
+                * gntdev takes the address of the PTE in find_grant_ptes() and
+                * passes it to the hypervisor in gntdev_map_grant_pages(). The
+                * purpose of the notifier is to prevent the hypervisor pointer
+                * to the PTE from going stale.
+                *
+                * Since this vma's mappings can't be touched without the
+                * mmap_sem, and we are holding it now, there is no need for
+                * the notifier_range locking pattern.
+                */
+               mmu_interval_read_begin(&map->notifier);
+
                map->pages_vm_start = vma->vm_start;
                err = apply_to_page_range(vma->vm_mm, vma->vm_start,
                                          vma->vm_end - vma->vm_start,
-- 
2.17.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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