diff options
author | Eryu Guan <guaneryu@gmail.com> | 2015-10-19 19:37:57 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2015-11-02 09:35:02 +0100 |
commit | 140592187b37dafba98dc55e71c429c56d6e60b8 (patch) | |
tree | d2acde344c2252c7c850cb9e6b4180dbde9d6ed7 /chunk-recover.c | |
parent | 529f5c585430e6ba3ee4d630918e9b958a44d7bb (diff) |
btrfs-progs: fix memory leak on error path
dev_scans and t_scans should be freed on malloc error.
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'chunk-recover.c')
-rw-r--r-- | chunk-recover.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/chunk-recover.c b/chunk-recover.c index d0ca920f..f8693f7f 100644 --- a/chunk-recover.c +++ b/chunk-recover.c @@ -846,11 +846,16 @@ static int scan_devices(struct recover_control *rc) if (!dev_scans) return -ENOMEM; t_scans = (pthread_t *)malloc(sizeof(pthread_t) * devnr); - if (!t_scans) + if (!t_scans) { + free(dev_scans); return -ENOMEM; + } t_rets = (long *)malloc(sizeof(long) * devnr); - if (!t_rets) + if (!t_rets) { + free(dev_scans); + free(t_scans); return -ENOMEM; + } list_for_each_entry(dev, &rc->fs_devices->devices, dev_list) { fd = open(dev->name, O_RDONLY); |