mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-16 09:46:55 +00:00
btrfs-progs: fix eb leak caused by missing btrfs_release_path() call.
[BUG] Commit06b6ad5e01
("btrfs-progs: check: check for invalid free space tree entries") makes btrfs check to report eb leakage even on newly created btrfs: # mkfs.btrfs -f test.img # btrfs check test.img Opening filesystem to check... Checking filesystem on test.img UUID: 13c26b6a-3b2c-49b3-94c7-80bcfa4e494b [1/7] checking root items [2/7] checking extents [3/7] checking free space tree [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 147456 bytes used, no error found total csum bytes: 0 total tree bytes: 147456 total fs tree bytes: 32768 total extent tree bytes: 16384 btree space waste bytes: 140595 file data blocks allocated: 0 referenced 0 extent buffer leak: start 30572544 len 16384 <<< Extent buffer leakage [CAUSE] The patch in mailinglist uses a dynamically allocated path while the committed one has been converted to on-stack path, which is preferred. However, the cleanup was not done properly. We only release the path inside the while loop, no at out label. This means, if we hit error or even just exhausted free space tree as expected, we will leak the path to free space tree root. Thus leading to the above leak report. [FIX] Fix the bug by calling btrfs_release_path() at out: label too. This should make the code behave the same as the patch submitted to the mailing list. Fixes:06b6ad5e01
("btrfs-progs: check: check for invalid free space tree entries") Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d2f543d92f
commit
650282a04c
@ -5776,6 +5776,7 @@ static int check_free_space_tree(struct btrfs_root *root)
|
||||
}
|
||||
ret = 0;
|
||||
out:
|
||||
btrfs_release_path(&path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user