Message ID | 1539332723-5868-1-git-send-email-robbieko@synology.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs-progs: super-recover: fix double free fs_devices memory | expand |
On Fri, Oct 12, 2018 at 04:25:23PM +0800, robbieko wrote: > From: Robbie Ko <robbieko@synology.com> > > super-recover collects btrfs devices information using existed > functions scan_one_devices(). > > Problem is fs_devices is freed twice. One in __open_ctree_fd() when > error happens and the other in btrfs_close_devices(recover.fs_devices) > when root is NULL. > > Commit "30fd6f2e92695c355c8f76b8887cd4fade60cdac" add force-close > all opened device before program exit, to avoid memory leak in all > btrfs sub-command. > Therefore, there is an unnecessary freed of fs_devices in > btrfs_recover_superblocks. > > Fix this problem by remove unnecessary freed of fs_devices. > > Signed-off-by: Robbie Ko <robbieko@synology.com> The fix for the double free has been in the devel branch, but thanks anyway.
diff --git a/super-recover.c b/super-recover.c index 880fd77..86b3df9 100644 --- a/super-recover.c +++ b/super-recover.c @@ -292,9 +292,6 @@ int btrfs_recover_superblocks(const char *dname, no_recover: recover_err_str(ret); free_recover_superblock(&recover); - /* check if we have freed fs_devices in close_ctree() */ - if (!root) - btrfs_close_devices(recover.fs_devices); return ret; }