[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