

invalidate_mapping_pages() takes start/end, but fadvise is currently passing
it start/len.



 mm/fadvise.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff -puN mm/fadvise.c~fadvise-fix mm/fadvise.c
--- 25/mm/fadvise.c~fadvise-fix	2003-08-08 02:31:47.000000000 -0700
+++ 25-akpm/mm/fadvise.c	2003-08-08 02:36:39.000000000 -0700
@@ -26,6 +26,8 @@ long sys_fadvise64(int fd, loff_t offset
 	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
 	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;

_
