diff --git a/fs/ext2/xip.c b/fs/ext2/xip.c
index 0aa5ac159c0940947925425c06d2a688c0bb05bc..ca7f00312388efabd9a16b38c52df28e4917aee0 100644
--- a/fs/ext2/xip.c
+++ b/fs/ext2/xip.c
@@ -36,7 +36,7 @@ __ext2_get_sector(struct inode *inode, sector_t offset, int create,
 	*result = tmp.b_blocknr;
 
 	/* did we get a sparse block (hole in the file)? */
-	if (!(*result)) {
+	if (!tmp.b_blocknr && !rc) {
 		BUG_ON(create);
 		rc = -ENODATA;
 	}