From: Carsten Otte Make sys_madvice/fadvice return sane with xip. Signed-off-by: Carsten Otte Signed-off-by: Andrew Morton --- mm/fadvise.c | 4 ++++ mm/madvise.c | 5 +++++ 2 files changed, 9 insertions(+) diff -puN mm/fadvise.c~xip-madvice-fadvice-execute-in-place-3rd-version mm/fadvise.c --- 25/mm/fadvise.c~xip-madvice-fadvice-execute-in-place-3rd-version 2005-05-23 19:06:04.000000000 -0700 +++ 25-akpm/mm/fadvise.c 2005-05-23 19:06:04.000000000 -0700 @@ -43,6 +43,10 @@ asmlinkage long sys_fadvise64_64(int fd, goto out; } + if (mapping->a_ops->get_xip_page) + /* no bad return value, but ignore advice */ + goto out; + /* Careful about overflows. Len == 0 means "as much as possible" */ endbyte = offset + len; if (!len || endbyte < len) diff -puN mm/madvise.c~xip-madvice-fadvice-execute-in-place-3rd-version mm/madvise.c --- 25/mm/madvise.c~xip-madvice-fadvice-execute-in-place-3rd-version 2005-05-23 19:06:04.000000000 -0700 +++ 25-akpm/mm/madvise.c 2005-05-23 19:06:04.000000000 -0700 @@ -86,6 +86,11 @@ static long madvise_willneed(struct vm_a if (!file) return -EBADF; + if (file->f_mapping->a_ops->get_xip_page) { + /* no bad return value, but ignore advice */ + return 0; + } + *prev = vma; start = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; if (end > vma->vm_end) _