From ff6b8e26b8a3cd69baedc783ea0463b1964fbcf9 Mon Sep 17 00:00:00 2001 From: suzuki Date: Wed, 27 Jul 2005 11:43:59 -0700 Subject: [PATCH] --- yaml --- r: 5132 b: refs/heads/master c: 165cd40235732644b1856a5ed5e158c9b93f6010 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/madvise.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index bcf76090cf36..b91d0e175d6d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4bfdf37830111321e2cd1fe0102dd776ce93194d +refs/heads/master: 165cd40235732644b1856a5ed5e158c9b93f6010 diff --git a/trunk/mm/madvise.c b/trunk/mm/madvise.c index 73180a22877e..c8c01a12fea4 100644 --- a/trunk/mm/madvise.c +++ b/trunk/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; }