mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 15:15:25 +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;
|
||||
bool killedAny = false;
|
||||
char *keypath = NULL;
|
||||
DIR *dp;
|
||||
DIR *dp = NULL;
|
||||
virCgroupPtr subgroup = NULL;
|
||||
struct dirent *ent;
|
||||
int direrr;
|
||||
@ -3381,7 +3381,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
||||
return -1;
|
||||
|
||||
if ((rc = virCgroupKillInternal(group, signum, pids)) < 0)
|
||||
return -1;
|
||||
goto cleanup;
|
||||
if (rc == 1)
|
||||
killedAny = true;
|
||||
|
||||
@ -3394,7 +3394,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
||||
}
|
||||
virReportSystemError(errno,
|
||||
_("Cannot open %s"), keypath);
|
||||
return -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
while ((direrr = virDirRead(dp, &ent, keypath)) > 0) {
|
||||
@ -3429,6 +3429,8 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
|
||||
|
||||
cleanup:
|
||||
virCgroupFree(&subgroup);
|
||||
VIR_FREE(keypath);
|
||||
if (dp)
|
||||
closedir(dp);
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user