[libvirt] [PATCH] libvirtd: avoid false-positive NULL-deref warning from clang

Jim Meyering jim at meyering.net
Mon Mar 1 20:44:24 UTC 2010


Eric Blake wrote:
> * daemon/libvirtd.c (qemudWorker): Rewrite loop to silence a
> warning.
> ---
>
> Here's the rewrite in patch form.
>
>  daemon/libvirtd.c |    9 ++++-----
>  1 files changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index 9bdbecb..9e16883 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -1502,16 +1502,15 @@ static void *qemudWorker(void *data)
>          struct qemud_client_message *msg;
>
>          virMutexLock(&server->lock);
> -        while (((client = qemudPendingJob(server)) == NULL) &&
> -               !worker->quitRequest) {
> -            if (virCondWait(&server->job, &server->lock) < 0) {
> +        while ((client = qemudPendingJob(server)) == NULL) {
> +            if (worker->quitRequest ||
> +                virCondWait(&server->job, &server->lock) < 0) {
>                  virMutexUnlock(&server->lock);
>                  return NULL;
>              }
>          }
>          if (worker->quitRequest) {
> -            if (client)
> -                virMutexUnlock(&client->lock);
> +            virMutexUnlock(&client->lock);
>              virMutexUnlock(&server->lock);
>              return NULL;
>          }

That's just what I'd tested.
ACK.

Thanks again.
I'll push this tomorrow if no one beats me to it.




More information about the libvir-list mailing list