From 7161ee20fea6e25a32feb91503ca2b7c7333c886 Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Thu, 14 Aug 2003 10:05:55 -0700 Subject: [PATCH] [PATCH] fadvise(POSIX_FADV_DONTNEED) fix invalidate_mapping_pages() takes start/end, but fadvise is currently passing it start/len. --- mm/fadvise.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/fadvise.c b/mm/fadvise.c index e544754ec5a88..8f1899604ac46 100644 --- a/mm/fadvise.c +++ b/mm/fadvise.c @@ -26,6 +26,8 @@ long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) struct inode *inode; struct address_space *mapping; struct backing_dev_info *bdi; + pgoff_t start_index; + pgoff_t end_index; int ret = 0; if (!file) @@ -65,8 +67,10 @@ long sys_fadvise64(int fd, loff_t offset, size_t len, int advice) case POSIX_FADV_DONTNEED: if (!bdi_write_congested(mapping->backing_dev_info)) filemap_flush(mapping); - invalidate_mapping_pages(mapping, offset >> PAGE_CACHE_SHIFT, - (len >> PAGE_CACHE_SHIFT) + 1); + start_index = offset >> PAGE_CACHE_SHIFT; + end_index = (offset + len + PAGE_CACHE_SIZE - 1) >> + PAGE_CACHE_SHIFT; + invalidate_mapping_pages(mapping, start_index, end_index); break; default: ret = -EINVAL; -- 2.53.0