[libvirt] [PATCH] util: fix releasing pidfile in cleanup

Pavel Hrdina phrdina at redhat.com
Tue Nov 4 10:49:10 UTC 2014


On 11/04/2014 10:51 AM, Martin Kletzander wrote:
> Coverity found out the very obvious problem in the code.  That is that
> virPidFileReleasePath() was called only if
> virPidFileAcquirePath() returned 0.  But virPidFileAcquirePath() doesn't
> return only 0 on success, but the FD that needs to be closed.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>   src/util/virpidfile.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c
> index 098458f..a77a326 100644
> --- a/src/util/virpidfile.c
> +++ b/src/util/virpidfile.c
> @@ -592,9 +592,8 @@ virPidFileForceCleanupPath(const char *path)
>       if (virPidFileReadPath(path, &pid) < 0)
>           return -1;
>
> -    if (virPidFileAcquirePath(path, false, 0) == 0) {
> -        virPidFileReleasePath(path, fd);
> -    } else {
> +    fd = virPidFileAcquirePath(path, false, 0);
> +    if (fd < 0) {
>           virResetLastError();
>
>           /* Only kill the process if the pid is valid one.  0 means
> @@ -607,5 +606,8 @@ virPidFileForceCleanupPath(const char *path)
>               return -1;
>       }
>
> +    if (fd)
> +        virPidFileReleasePath(path, fd);
> +
>       return 0;
>   }
>

ACK

Pavel




More information about the libvir-list mailing list