summaryrefslogtreecommitdiff
path: root/fs/btrfs
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2012-12-05 10:53:45 (GMT)
committerChris Mason <chris.mason@fusionio.com>2012-12-17 01:46:19 (GMT)
commit6347b3c433a4cff00eb2299c7f2c7d1d8b24c1fc (patch)
tree528eabdcc7fe59c50ac8dba4347851f05ff83b2d /fs/btrfs
parent4b5829a8e3104c8bc115d926a0285d3ff9bcfc77 (diff)
downloadlinux-fsl-qoriq-6347b3c433a4cff00eb2299c7f2c7d1d8b24c1fc.tar.xz
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. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/file.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 8e3d678..d75412b 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1867,8 +1867,8 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
u64 drop_end;
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);