qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PATCH 02/18] blockjob: introduce .drain c


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH 02/18] blockjob: introduce .drain callback for jobs
Date: Sun, 16 Oct 2016 11:02:19 +0100
User-agent: Mutt/1.7.0 (2016-08-17)

On Thu, Oct 13, 2016 at 07:34:06PM +0200, Paolo Bonzini wrote:
> +static void backup_drain(BlockJob *job)
> +{
> +    BackupBlockJob *s = container_of(job, BackupBlockJob, common);
> +
> +    /* Need to keep a reference in case blk_drain triggers execution
> +     * of backup_complete...
> +     */
> +    if (s->target) {
> +        blk_ref(s->target);
> +        blk_drain(s->target);
> +        blk_unref(s->target);
> +    }
[...]
> @@ -331,6 +346,7 @@ static void backup_complete(BlockJob *job, void *opaque)
>      BackupCompleteData *data = opaque;
>  
>      blk_unref(s->target);
> +    s->target = NULL;

Will blk_unref(s->target) segfault since backup_complete() has set it to
NULL?  I expected backup_drain() to stash the pointer in a local
variable to avoid using s->target.

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]