[libvirt] [PATCH] threadpool: Check for NULL jobdata

Eric Blake eblake at redhat.com
Mon Jan 3 21:48:45 UTC 2011


On 12/26/2010 11:29 PM, Hu Tao wrote:
> Do nothing if caller passes NULL as jobdata to virThreadPoolSendJob().
> ---
>  src/util/threadpool.c |    3 +++
>  src/util/threadpool.h |    1 -
>  2 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/src/util/threadpool.c b/src/util/threadpool.c
> index 1213862..2907478 100644
> --- a/src/util/threadpool.c
> +++ b/src/util/threadpool.c
> @@ -192,6 +192,9 @@ int virThreadPoolSendJob(virThreadPoolPtr pool,
>  {
>      virThreadPoolJobPtr job;
>  
> +    if (!jobData)
> +        return -1;
> +

This hunk is wrong.  jobData is opaque - we cannot assume anything about
it's meaning.  A job may very well have something to do even with a NULL
job data, and refusing to run a job just because one of its two opaque
arguments is NULL is no better than marking the parameter as
ATTRIBUTE_NONNULL when registering the job.

> +++ b/src/util/threadpool.h
> @@ -42,7 +42,6 @@ void virThreadPoolFree(virThreadPoolPtr pool);
>  
>  int virThreadPoolSendJob(virThreadPoolPtr pool,
>                           void *jobdata) ATTRIBUTE_NONNULL(1)
> -                                        ATTRIBUTE_NONNULL(2)
>                                          ATTRIBUTE_RETURN_CHECK;

But this hunk is okay.  I've applied just this hunk, as it is
technically a bug fix (over-strict compilation markings), and minimal
impact for inclusion in 0.8.7.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110103/ad51cefd/attachment-0001.sig>


More information about the libvir-list mailing list