]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/mmap.c
Merge tag 'v4.5-rc1' into x86/asm, to refresh the branch before merging new changes
[karo-tx-linux.git] / mm / mmap.c
index 84b12624ceb01d83762172634179825b086961fd..407ab434d5ee6728613e155cc1f6d74b6b7a0a0d 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -3033,11 +3033,16 @@ static int special_mapping_fault(struct vm_area_struct *vma,
        pgoff_t pgoff;
        struct page **pages;
 
-       if (vma->vm_ops == &legacy_special_mapping_vmops)
+       if (vma->vm_ops == &legacy_special_mapping_vmops) {
                pages = vma->vm_private_data;
-       else
-               pages = ((struct vm_special_mapping *)vma->vm_private_data)->
-                       pages;
+       } else {
+               struct vm_special_mapping *sm = vma->vm_private_data;
+
+               if (sm->fault)
+                       return sm->fault(sm, vma, vmf);
+
+               pages = sm->pages;
+       }
 
        for (pgoff = vmf->pgoff; pgoff && *pages; ++pages)
                pgoff--;