]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
vhost-vdpa: fix vm_flags for virtqueue doorbell mapping
authorJason Wang <jasowang@redhat.com>
Tue, 13 Apr 2021 09:15:57 +0000 (17:15 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 3 May 2021 08:55:52 +0000 (04:55 -0400)
The virtqueue doorbell is usually implemented via registeres but we
don't provide the necessary vma->flags like VM_PFNMAP. This may cause
several issues e.g when userspace tries to map the doorbell via vhost
IOTLB, kernel may panic due to the page is not backed by page
structure. This patch fixes this by setting the necessary
vm_flags. With this patch, try to map doorbell via IOTLB will fail
with bad address.

Cc: stable@vger.kernel.org
Fixes: ddd89d0a059d ("vhost_vdpa: support doorbell mapping via mmap")
Signed-off-by: Jason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20210413091557.29008-1-jasowang@redhat.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/vdpa.c

index bfa4c6ef554e58e98b5737690181e9ce228627a5..c79d2f2387aaa25572b2185ef12dad19406c1f36 100644 (file)
@@ -993,6 +993,7 @@ static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
        if (vma->vm_end - vma->vm_start != notify.size)
                return -ENOTSUPP;
 
+       vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
        vma->vm_ops = &vhost_vdpa_vm_ops;
        return 0;
 }