Merge branch 'for-3.20/bdi' of git://git.kernel.dk/linux-block
[linux-drm-fsl-dcu.git] / mm / madvise.c
index d79fb5e8f80a0b4148e4e8bfb48bed81097d04b6..1077cbdc8b5207a6b407f3b4d97f4f5e99862065 100644 (file)
@@ -222,19 +222,22 @@ static long madvise_willneed(struct vm_area_struct *vma,
        struct file *file = vma->vm_file;
 
 #ifdef CONFIG_SWAP
-       if (!file || mapping_cap_swap_backed(file->f_mapping)) {
+       if (!file) {
                *prev = vma;
-               if (!file)
-                       force_swapin_readahead(vma, start, end);
-               else
-                       force_shm_swapin_readahead(vma, start, end,
-                                               file->f_mapping);
+               force_swapin_readahead(vma, start, end);
                return 0;
        }
-#endif
 
+       if (shmem_mapping(file->f_mapping)) {
+               *prev = vma;
+               force_shm_swapin_readahead(vma, start, end,
+                                       file->f_mapping);
+               return 0;
+       }
+#else
        if (!file)
                return -EBADF;
+#endif
 
        if (file->f_mapping->a_ops->get_xip_mem) {
                /* no bad return value, but ignore advice */