diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2006-11-03 01:07:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-11-03 15:27:56 -0500 |
commit | 029e332ea717810172e965ec50f942755ad0c58a (patch) | |
tree | dcffd8c8ad3229a3af603a4e59e43c05793c1617 /mm/readahead.c | |
parent | 5d861d920a86523bbeb56c19b9906c3fb1b58048 (diff) |
[PATCH] Cleanup read_pages()
Current read_pages() assume ->readpages() frees the passed pages.
This patch free the pages in ->read_pages(), if those were remaining in the
pages_list. So, readpages() just can ignore the remaining pages in
pages_list.
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Steven French <sfrench@us.ibm.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Steven Whitehouse <swhiteho@redhat.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/readahead.c')
-rw-r--r-- | mm/readahead.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/readahead.c b/mm/readahead.c index 1ba736ac0367..23cb61a01c6e 100644 --- a/mm/readahead.c +++ b/mm/readahead.c | |||
@@ -173,6 +173,8 @@ static int read_pages(struct address_space *mapping, struct file *filp, | |||
173 | 173 | ||
174 | if (mapping->a_ops->readpages) { | 174 | if (mapping->a_ops->readpages) { |
175 | ret = mapping->a_ops->readpages(filp, mapping, pages, nr_pages); | 175 | ret = mapping->a_ops->readpages(filp, mapping, pages, nr_pages); |
176 | /* Clean up the remaining pages */ | ||
177 | put_pages_list(pages); | ||
176 | goto out; | 178 | goto out; |
177 | } | 179 | } |
178 | 180 | ||