From 1efce3f90371d12bbb429b1810ce3a5c53e4d4f6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 17 Apr 2023 08:07:09 -0600 Subject: btrfsutil: RebuiltTree: Fix potential infinite loop in RebuiltCOWDistance --- lib/btrfsutil/rebuilt_tree.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/btrfsutil') diff --git a/lib/btrfsutil/rebuilt_tree.go b/lib/btrfsutil/rebuilt_tree.go index 3036938..a0f5932 100644 --- a/lib/btrfsutil/rebuilt_tree.go +++ b/lib/btrfsutil/rebuilt_tree.go @@ -506,11 +506,12 @@ func (tree *RebuiltTree) RebuiltAddRoot(ctx context.Context, rootNode btrfsvol.L // RebuiltCOWDistance returns how many COW-snapshots down the 'tree' // is from the 'parent'. func (tree *RebuiltTree) RebuiltCOWDistance(parentID btrfsprim.ObjID) (dist int, ok bool) { + root := tree.ancestorRoot for { if parentID == tree.ID { return dist, true } - if tree.Parent == nil { + if tree.Parent == nil || tree.ID == root { return 0, false } tree = tree.Parent -- cgit v1.2.3-2-g168b