summaryrefslogtreecommitdiff
path: root/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-02-28 08:05:47 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-28 08:05:47 -0700
commit996137cdfdff9ec6fbb5c93e21d75b21052e01ae (patch)
treea6dba9250b1a8d0fd4eadc3806a217833a9133ac /lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go
parenta7a3b5b08557abf7edc6aa4649e85069c3a450b4 (diff)
rebuildnodes: Fix a data race
Calling FreeNodeRef while an item from that node is still in use is a BAD TIME.
Diffstat (limited to 'lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go')
-rw-r--r--lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go
index 643fbe7..bc36485 100644
--- a/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go
+++ b/lib/btrfsprogs/btrfsinspect/rebuildnodes/rebuild.go
@@ -288,6 +288,7 @@ func (o *rebuilder) processSettledItemQueue(ctx context.Context) error {
Key: item.Key,
Body: item.Body,
})
+ item.Body.Free()
if item.ItemType == btrfsitem.ROOT_ITEM_KEY {
o.treeQueue.Insert(item.ObjectID)
}