From 7c2844538143aebb26f0436c2760172017901536 Mon Sep 17 00:00:00 2001 From: Yan Date: Tue, 22 Jan 2008 11:32:05 -0500 Subject: [PATCH] Fix for btrfs_find_free_objectid btrfs_find_free_objectid may return a used objectid due to arithmetic underflow. This bug may happen when parameter 'root' is tree root, so it may cause serious problems when creating snapshot or sub-volume. --- inode-map.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/inode-map.c b/inode-map.c index ab74977..a0925ea 100644 --- a/inode-map.c +++ b/inode-map.c @@ -62,7 +62,6 @@ int btrfs_find_free_objectid(struct btrfs_trans_handle *trans, struct btrfs_path *path; struct btrfs_key key; int ret; - u64 hole_size = 0; int slot = 0; u64 last_ino = 0; int start_found; @@ -109,8 +108,7 @@ int btrfs_find_free_objectid(struct btrfs_trans_handle *trans, if (start_found) { if (last_ino < search_start) last_ino = search_start; - hole_size = key.objectid - last_ino; - if (hole_size > 0) { + if (key.objectid > last_ino) { *objectid = last_ino; goto found; } -- 2.7.4