diff options
| author | Roland Dreier <roland@eddore.topspincom.com> | 2005-07-27 19:12:56 -0700 |
|---|---|---|
| committer | Roland Dreier <roland@eddore.topspincom.com> | 2005-07-27 19:12:56 -0700 |
| commit | 2868bd281fef21d1e73d6b7648a41efc3d75f10c (patch) | |
| tree | 0ad821cfcc9e3f9e8b662d026bec6bb6d4ce69ac /mm/madvise.c | |
| parent | 6d376756f2cf3478d5a4fdb8d18e958948366b9d (diff) | |
| parent | 41c018b7ecb60b1c2c4d5dee0cd37d32a94c45af (diff) | |
Merge /scratch/Ksrc/linux-git/
Diffstat (limited to 'mm/madvise.c')
| -rw-r--r-- | mm/madvise.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/mm/madvise.c b/mm/madvise.c index 73180a22877..c8c01a12fea 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -83,9 +83,6 @@ static long madvise_willneed(struct vm_area_struct * vma, { 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; @@ -140,11 +137,16 @@ static long madvise_dontneed(struct vm_area_struct * vma, return 0; } -static long madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, - unsigned long start, unsigned long end, int behavior) +static long +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; + switch (behavior) { case MADV_NORMAL: case MADV_SEQUENTIAL: @@ -165,6 +167,7 @@ static long madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev break; } +out: return error; } |
