btrfs-progs: free the local list pending_list in btrfs_scan_one_dir
Originally the local pending_list is not guaranteed to be freed upon fails, it should be emptyed and the elements should be freed. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
parent
0785476db0
commit
aea22fa1b5
10
utils.c
10
utils.c
|
@ -1066,8 +1066,8 @@ again:
|
|||
dirp = opendir(dirname);
|
||||
if (!dirp) {
|
||||
fprintf(stderr, "Unable to open %s for scanning\n", dirname);
|
||||
free(fullpath);
|
||||
return -ENOENT;
|
||||
ret = -ENOENT;
|
||||
goto fail;
|
||||
}
|
||||
while(1) {
|
||||
dirent = readdir(dirp);
|
||||
|
@ -1133,6 +1133,12 @@ again:
|
|||
fail:
|
||||
free(pending);
|
||||
free(fullpath);
|
||||
while (!list_empty(&pending_list)) {
|
||||
pending = list_entry(pending_list.next, struct pending_dir,
|
||||
list);
|
||||
list_del(&pending->list);
|
||||
free(pending);
|
||||
}
|
||||
if (dirp)
|
||||
closedir(dirp);
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue