On 10/28/19 4:10 PM, Jason Gunthorpe wrote:
> @@ -445,17 +438,9 @@ static void gntdev_vma_close(struct vm_area_struct *vma)
>       struct gntdev_priv *priv = file->private_data;
>  
>       pr_debug("gntdev_vma_close %p\n", vma);
> -     if (use_ptemod) {
> -             /* It is possible that an mmu notifier could be running
> -              * concurrently, so take priv->lock to ensure that the vma won't
> -              * vanishing during the unmap_grant_pages call, since we will
> -              * spin here until that completes. Such a concurrent call will
> -              * not do any unmapping, since that has been done prior to
> -              * closing the vma, but it may still iterate the unmap_ops list.
> -              */
> -             mutex_lock(&priv->lock);
> +     if (use_ptemod && map->vma == vma) {


Is it possible for map->vma not to be equal to vma?

-boris


> +             mmu_range_notifier_remove(&map->notifier);
>               map->vma = NULL;
> -             mutex_unlock(&priv->lock);
>       }
>       vma->vm_private_data = NULL;
>       gntdev_put_map(priv, map);
>


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

Reply via email to