Btrfs: fix memory leak of reloc_root
authorLiu Bo <bo.li.liu@oracle.com>
Tue, 19 Jul 2016 22:36:05 +0000 (15:36 -0700)
committerChris Mason <clm@fb.com>
Thu, 25 Aug 2016 10:58:15 +0000 (03:58 -0700)
commit1c1ea4f781db9f754842b9c31d1eff400d17cddc
tree7e14ac7f74054a5d5912b2fd0db38abcf73e9a4d
parent10838816547a28696ca10e038b3b32f2efec5a42
Btrfs: fix memory leak of reloc_root

When some critical errors occur and FS would be flipped into RO,
if we have an on-going balance, we can end up with a memory leak
of root->reloc_root since btrfs_drop_snapshots() bails out
without freeing reloc_root at the very early start.

However, we're not able to free reloc_root in btrfs_drop_snapshots()
because its caller, merge_reloc_roots(), still needs to access it to
cleanup reloc_root's rbtree.

This makes us free reloc_root when we're going to free fs/file roots.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/disk-io.c