diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2006-11-02 22:07:06 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-11-03 12:27:56 -0800 |
commit | 029e332ea717810172e965ec50f942755ad0c58a (patch) | |
tree | dcffd8c8ad3229a3af603a4e59e43c05793c1617 /mm | |
parent | 5d861d920a86523bbeb56c19b9906c3fb1b58048 (diff) | |
download | linux-029e332ea717810172e965ec50f942755ad0c58a.tar.gz linux-029e332ea717810172e965ec50f942755ad0c58a.tar.bz2 linux-029e332ea717810172e965ec50f942755ad0c58a.zip |
[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')
-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, if (mapping->a_ops->readpages) { ret = mapping->a_ops->readpages(filp, mapping, pages, nr_pages); + /* Clean up the remaining pages */ + put_pages_list(pages); goto out; } |