ext4: init pagevec in ext4_da_block_invalidatepages
authorEric Sandeen <sandeen@redhat.com>
Thu, 15 Nov 2012 03:22:05 +0000 (22:22 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 15 Nov 2012 03:22:05 +0000 (22:22 -0500)
ext4_da_block_invalidatepages is missing a pagevec_init(),
which means that pvec->cold contains random garbage.

This affects whether the page goes to the front or
back of the LRU when ->cold makes it to
free_hot_cold_page()

Reviewed-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: stable@vger.kernel.org
fs/ext4/inode.c

index 7f9ccc1381a953b8c5499787eba818f7cc0accd8..52f7ff2f2e7e1efacce00ca0b56dba27dd69f997 100644 (file)
@@ -1482,6 +1482,7 @@ static void ext4_da_block_invalidatepages(struct mpage_da_data *mpd)
        last = end << (PAGE_CACHE_SHIFT - inode->i_blkbits);
        ext4_es_remove_extent(inode, start, last - start + 1);
 
+       pagevec_init(&pvec, 0);
        while (index <= end) {
                nr_pages = pagevec_lookup(&pvec, mapping, index, PAGEVEC_SIZE);
                if (nr_pages == 0)