Btrfs-progs: fsck: fix double free memory crash
authorRakesh Pandit <rakesh@tuxera.com>
Sun, 20 Apr 2014 13:17:53 +0000 (16:17 +0300)
committerDavid Sterba <dsterba@suse.cz>
Fri, 2 May 2014 15:03:50 +0000 (17:03 +0200)
Fix double free of memory if btrfs_open_devices fails:
*** Error in `btrfs': double free or corruption (fasttop): 0x000000000066e020 ***

Crash happened because when open failed on device inside
btrfs_open_devices it freed all memory by calling btrfs_close_devices but
inside disk-io.c we call btrfs_close_again it again.

Signed-off-by: Rakesh Pandit <rakesh@tuxera.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
disk-io.c

index 19b95a7..8db0335 100644 (file)
--- a/disk-io.c
+++ b/disk-io.c
@@ -1091,8 +1091,7 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path,
 
        ret = btrfs_open_devices(fs_devices, oflags);
        if (ret)
-               goto out_devices;
-
+               goto out;
 
        disk_super = fs_info->super_copy;
        if (!(flags & OPEN_CTREE_RECOVER_SUPER))