[libvirt] [PATCH] vircgroup: Don't leak keypath if failed to kill process
chenhanxiao at cn.fujitsu.com
chenhanxiao at cn.fujitsu.com
Fri May 16 06:59:37 UTC 2014
ping
> -----Original Message-----
> From: Chen, Hanxiao/陈 晗霄
> Sent: Tuesday, May 13, 2014 4:01 PM
> To: libvir-list at redhat.com
> Cc: Chen, Hanxiao/陈 晗霄
> Subject: [libvirt][PATCH] vircgroup: Don't leak keypath if failed to kill process
>
> Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> ---
> src/util/vircgroup.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> index fce380a..c578bd0 100644
> --- a/src/util/vircgroup.c
> +++ b/src/util/vircgroup.c
> @@ -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,7 +3429,9 @@ virCgroupKillRecursiveInternal(virCgroupPtr group,
>
> cleanup:
> virCgroupFree(&subgroup);
> - closedir(dp);
> + VIR_FREE(keypath);
> + if (dp)
> + closedir(dp);
>
> return ret;
> }
> --
> 1.9.0
More information about the libvir-list
mailing list