Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5cf66426 authored by Yan's avatar Yan Committed by Chris Mason
Browse files

Btrfs: Off by one fixes for extent-tree.c

parent 5e5745dc
Loading
Loading
Loading
Loading
+3 −7
Original line number Original line Diff line number Diff line
@@ -150,12 +150,9 @@ struct btrfs_block_group_cache *btrfs_lookup_block_group(struct
		return NULL;
		return NULL;


	block_group = (struct btrfs_block_group_cache *)(unsigned long)ptr;
	block_group = (struct btrfs_block_group_cache *)(unsigned long)ptr;

	if (block_group->key.objectid <= bytenr && bytenr <

	if (block_group->key.objectid <= bytenr && bytenr <=
	    block_group->key.objectid + block_group->key.offset)
	    block_group->key.objectid + block_group->key.offset)
		return block_group;
		return block_group;

	return NULL;
	return NULL;
}
}
static u64 find_search_start(struct btrfs_root *root,
static u64 find_search_start(struct btrfs_root *root,
@@ -195,7 +192,7 @@ static u64 find_search_start(struct btrfs_root *root,
			continue;
			continue;
		}
		}
		if (data != BTRFS_BLOCK_GROUP_MIXED &&
		if (data != BTRFS_BLOCK_GROUP_MIXED &&
		    start + num >= cache->key.objectid + cache->key.offset)
		    start + num > cache->key.objectid + cache->key.offset)
			goto new_group;
			goto new_group;
		return start;
		return start;
	}
	}
@@ -1088,9 +1085,8 @@ static int find_free_extent(struct btrfs_trans_handle *trans, struct btrfs_root


	if (ins->objectid + num_bytes >= search_end)
	if (ins->objectid + num_bytes >= search_end)
		goto enospc;
		goto enospc;

	if (!full_scan && data != BTRFS_BLOCK_GROUP_MIXED &&
	if (!full_scan && data != BTRFS_BLOCK_GROUP_MIXED &&
	    ins->objectid + num_bytes >= block_group->
	    ins->objectid + num_bytes > block_group->
	    key.objectid + block_group->key.offset) {
	    key.objectid + block_group->key.offset) {
		search_start = block_group->key.objectid +
		search_start = block_group->key.objectid +
			block_group->key.offset;
			block_group->key.offset;