diff options
author | Filipe Manana <fdmanana@gmail.com> | 2014-06-05 16:22:26 +0400 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-06-10 04:21:14 +0400 |
commit | 6fdef6d43cb897bcbbed13786e8cc8cccabc442a (patch) | |
tree | af3ecf8a8ffe78f736ac7257946f2174f2262664 | |
parent | 809f9016253dbfec00f71e98e11c4bcbf01b6c26 (diff) | |
download | linux-6fdef6d43cb897bcbbed13786e8cc8cccabc442a.tar.xz |
Btrfs: don't release invalid page in btrfs_page_exists_in_range()
In inode.c:btrfs_page_exists_in_range(), if the page we got from
the radix tree is an exception entry, which can't be retried, we
exit the loop with a non-NULL page and then call page_cache_release
against it, which is not ok since it's not a valid page. This could
also make us return true when we shouldn't.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Chris Mason <clm@fb.com>
-rw-r--r-- | fs/btrfs/inode.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index f265f413acba..477e64a1146f 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6776,6 +6776,7 @@ bool btrfs_page_exists_in_range(struct inode *inode, loff_t start, loff_t end) * here as an exceptional entry: so return it without * attempting to raise page count. */ + page = NULL; break; /* TODO: Is this relevant for this use case? */ } |