These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / fs / aio.c
index 5a2380d..14af015 100644 (file)
@@ -310,15 +310,9 @@ static void aio_free_ring(struct kioctx *ctx)
        }
 }
 
-static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
-{
-       vma->vm_flags |= VM_DONTEXPAND;
-       vma->vm_ops = &generic_file_vm_ops;
-       return 0;
-}
-
-static int aio_ring_remap(struct file *file, struct vm_area_struct *vma)
+static int aio_ring_mremap(struct vm_area_struct *vma)
 {
+       struct file *file = vma->vm_file;
        struct mm_struct *mm = vma->vm_mm;
        struct kioctx_table *table;
        int i, res = -EINVAL;
@@ -344,9 +338,24 @@ static int aio_ring_remap(struct file *file, struct vm_area_struct *vma)
        return res;
 }
 
+static const struct vm_operations_struct aio_ring_vm_ops = {
+       .mremap         = aio_ring_mremap,
+#if IS_ENABLED(CONFIG_MMU)
+       .fault          = filemap_fault,
+       .map_pages      = filemap_map_pages,
+       .page_mkwrite   = filemap_page_mkwrite,
+#endif
+};
+
+static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
+{
+       vma->vm_flags |= VM_DONTEXPAND;
+       vma->vm_ops = &aio_ring_vm_ops;
+       return 0;
+}
+
 static const struct file_operations aio_ring_fops = {
        .mmap = aio_ring_mmap,
-       .mremap = aio_ring_remap,
 };
 
 #if IS_ENABLED(CONFIG_MIGRATION)