diff options
author | Chris Mason <chris.mason@oracle.com> | 2009-09-23 20:23:16 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2009-09-23 20:30:52 -0400 |
commit | 46562cec98368623bcd18d7fd30f20c04afd5978 (patch) | |
tree | 4e5bbba7f459a1094b09413f65239b26401117f8 | |
parent | 42daec299b8b6b9605976d0ee1266b343a31cbcc (diff) |
Btrfs: Fix test_range_bit for whole file extents
If test_range_bit finds an extent that goes all the way to (u64)-1, it
can incorrectly wrap the u64 instead of treaing it like the end of
the address space.
This just adds a check for the highest possible offset so we don't wrap.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
-rw-r--r-- | fs/btrfs/extent_io.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index b9506548853b..dcce98d0ec4f 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -1564,6 +1564,10 @@ int test_range_bit(struct extent_io_tree *tree, u64 start, u64 end, | |||
1564 | bitset = 0; | 1564 | bitset = 0; |
1565 | break; | 1565 | break; |
1566 | } | 1566 | } |
1567 | |||
1568 | if (state->end == (u64)-1) | ||
1569 | break; | ||
1570 | |||
1567 | start = state->end + 1; | 1571 | start = state->end + 1; |
1568 | if (start > end) | 1572 | if (start > end) |
1569 | break; | 1573 | break; |