Btrfs-progs: fix possible memory leak related to subvolume/snapshot creation

The operation related qgroup inherit may fails, if it fails, we should
free memory allocated,otherwise, memory leak happens.

Signed-off-by: Wang Shilong <wangsl-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:
Wang Shilong 2013-07-04 00:07:38 +08:00 committed by David Sterba
parent 876e3f9380
commit 705e76ee8d
1 changed files with 20 additions and 10 deletions

View File

@ -89,13 +89,17 @@ static int cmd_subvol_create(int argc, char **argv)
switch (c) {
case 'c':
res = qgroup_inherit_add_copy(&inherit, optarg, 0);
if (res)
return res;
if (res) {
retval = res;
goto out;
}
break;
case 'i':
res = qgroup_inherit_add_group(&inherit, optarg);
if (res)
return res;
if (res) {
retval = res;
goto out;
}
break;
default:
usage(cmd_subvol_create_usage);
@ -516,21 +520,27 @@ static int cmd_snapshot(int argc, char **argv)
switch (c) {
case 'c':
res = qgroup_inherit_add_copy(&inherit, optarg, 0);
if (res)
return res;
if (res) {
retval = res;
goto out;
}
break;
case 'i':
res = qgroup_inherit_add_group(&inherit, optarg);
if (res)
return res;
if (res) {
retval = res;
goto out;
}
break;
case 'r':
readonly = 1;
break;
case 'x':
res = qgroup_inherit_add_copy(&inherit, optarg, 1);
if (res)
return res;
if (res) {
retval = res;
goto out;
}
break;
default:
usage(cmd_snapshot_usage);