Skip to contentSkip to conversation

Btrfs: fix off-by-one error of the same page check in btrfs_punch_hole()

PATCH New Miao Xie 1 participant 1 message Dec 5, 2012 Btrfs file system

lore
Share & tools
lore

Miao Xie

author
#0 lore raw

PATCH 3/6 Btrfs: fix off-by-one error of the same page check in btrfs_punch_hole()

(start + len) is the start of the adjacent extent, not the end of the current extent, so we should not use it to check the hole is on the same page or not.

---
 fs/btrfs/file.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
fs/btrfs/file.c +2 -2
index bd5afcc..b477da2 100644
@@ -1881,8 +1881,8 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 	unsigned long nr;
 	int ret = 0;
 	int err = 0;
-	bool same_page = (offset >> PAGE_CACHE_SHIFT) ==
-		((offset + len) >> PAGE_CACHE_SHIFT);
+	bool same_page = ((offset >> PAGE_CACHE_SHIFT) ==
+			  ((offset + len - 1) >> PAGE_CACHE_SHIFT));
 
 	btrfs_wait_ordered_range(inode, offset, len);
 
Signature · 1 line
1.7.11.7