aboutsummaryrefslogtreecommitdiffstats
path: root/disk-io.c
diff options
context:
space:
mode:
authorRakesh Pandit <rakesh@tuxera.com>2014-04-20 16:17:53 +0300
committerDavid Sterba <dsterba@suse.cz>2014-05-02 17:03:50 +0200
commitcdee9ecc184f60a5110f2b68c72ec8d46c103f4e (patch)
treeb127965e6d5264540a5bcd9490345b6223b81835 /disk-io.c
parentad17d5608462e248c63f7be7b47bdbeaf971e52f (diff)
downloadbtrfs-progs-cdee9ecc184f60a5110f2b68c72ec8d46c103f4e.tar.gz
btrfs-progs-cdee9ecc184f60a5110f2b68c72ec8d46c103f4e.tar.xz
btrfs-progs-cdee9ecc184f60a5110f2b68c72ec8d46c103f4e.zip
Btrfs-progs: fsck: fix double free memory crash
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>
Diffstat (limited to 'disk-io.c')
-rw-r--r--disk-io.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/disk-io.c b/disk-io.c
index 19b95a7..8db0335 100644
--- 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))