From: Filipe Manana Date: Thu, 5 Jun 2014 12:22:26 +0000 (+0100) Subject: Btrfs: don't release invalid page in btrfs_page_exists_in_range() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=6fdef6d43cb897bcbbed13786e8cc8cccabc442a;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 Signed-off-by: Chris Mason --- 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? */ }