]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - mm/frame_vector.c
vhost: do not try to access device IOTLB when not initialized
[mirror_ubuntu-bionic-kernel.git] / mm / frame_vector.c
index 2f98df0d460eef41f80586544ad98abb66fae60c..c64dca6e27c28c915ad4ce662de764d6da5ef6f1 100644 (file)
@@ -53,6 +53,20 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames,
                ret = -EFAULT;
                goto out;
        }
+
+       /*
+        * While get_vaddr_frames() could be used for transient (kernel
+        * controlled lifetime) pinning of memory pages all current
+        * users establish long term (userspace controlled lifetime)
+        * page pinning. Treat get_vaddr_frames() like
+        * get_user_pages_longterm() and disallow it for filesystem-dax
+        * mappings.
+        */
+       if (vma_is_fsdax(vma)) {
+               ret = -EOPNOTSUPP;
+               goto out;
+       }
+
        if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) {
                vec->got_ref = true;
                vec->is_pfns = false;