mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 15:45:28 +00:00
util: fix memory leak in failure path of virCgroupKillRecursiveInternal
Don't leak keypath when we fail to kill a process Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
This commit is contained in:
parent
b279e52f7b
commit
d18aa70416
@ -3370,7 +3370,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
|||||||
int rc;
|
int rc;
|
||||||
bool killedAny = false;
|
bool killedAny = false;
|
||||||
char *keypath = NULL;
|
char *keypath = NULL;
|
||||||
DIR *dp;
|
DIR *dp = NULL;
|
||||||
virCgroupPtr subgroup = NULL;
|
virCgroupPtr subgroup = NULL;
|
||||||
struct dirent *ent;
|
struct dirent *ent;
|
||||||
int direrr;
|
int direrr;
|
||||||
@ -3381,7 +3381,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if ((rc = virCgroupKillInternal(group, signum, pids)) < 0)
|
if ((rc = virCgroupKillInternal(group, signum, pids)) < 0)
|
||||||
return -1;
|
goto cleanup;
|
||||||
if (rc == 1)
|
if (rc == 1)
|
||||||
killedAny = true;
|
killedAny = true;
|
||||||
|
|
||||||
@ -3394,7 +3394,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
|||||||
}
|
}
|
||||||
virReportSystemError(errno,
|
virReportSystemError(errno,
|
||||||
_("Cannot open %s"), keypath);
|
_("Cannot open %s"), keypath);
|
||||||
return -1;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((direrr = virDirRead(dp, &ent, keypath)) > 0) {
|
while ((direrr = virDirRead(dp, &ent, keypath)) > 0) {
|
||||||
@ -3429,6 +3429,8 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
|||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
virCgroupFree(&subgroup);
|
virCgroupFree(&subgroup);
|
||||||
|
VIR_FREE(keypath);
|
||||||
|
if (dp)
|
||||||
closedir(dp);
|
closedir(dp);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user