Revert this recent correctness change: Douglas Crosher <dcrosher@scieneer.com>
reported that it broke an existing application, and that madvise() works
without error on anonymous mappings on Solaris.
This means that madvise() will remain non-standards-compliant: we should
return -EBADF for all requests against non-file-backed vma's, but Linux only
does this for MADV_WILLNEED requests.
Signed-off-by: Suzuki K P <suzuki@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
 {
        struct file *file = vma->vm_file;
 
+       if (!file)
+               return -EBADF;
+
        if (file->f_mapping->a_ops->get_xip_page) {
                /* no bad return value, but ignore advice */
                return 0;
 madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev,
                unsigned long start, unsigned long end, int behavior)
 {
-       struct file *filp = vma->vm_file;
-       long error = -EBADF;
-
-       if (!filp)
-               goto  out;
+       long error;
 
        switch (behavior) {
        case MADV_NORMAL:
                error = -EINVAL;
                break;
        }
-               
-out:
        return error;
 }