diff mbox

[for-2.0] dataplane: fix implicit IOThread refcount

Message ID 1395161452-5123-1-git-send-email-stefanha@redhat.com
State New
Headers show

Commit Message

Stefan Hajnoczi March 18, 2014, 4:50 p.m. UTC
When creating an IOThread implicitly (the user did not specify
x-iothread=<id>) remember that iothread_find() does not return the
object with an incremented refcount.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/block/dataplane/virtio-blk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Fam Zheng March 19, 2014, 8:21 a.m. UTC | #1
On Tue, 03/18 17:50, Stefan Hajnoczi wrote:
> When creating an IOThread implicitly (the user did not specify
> x-iothread=<id>) remember that iothread_find() does not return the
> object with an incremented refcount.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  hw/block/dataplane/virtio-blk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
> index a5afc21..f558b45 100644
> --- a/hw/block/dataplane/virtio-blk.c
> +++ b/hw/block/dataplane/virtio-blk.c
> @@ -393,7 +393,6 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
>      if (blk->iothread) {
>          s->internal_iothread = false;
>          s->iothread = blk->iothread;
> -        object_ref(OBJECT(s->iothread));
>      } else {
>          /* Create per-device IOThread if none specified */
>          Error *local_err = NULL;
> @@ -408,6 +407,7 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
>          s->iothread = iothread_find(vdev->name);
>          assert(s->iothread);
>      }
> +    object_ref(OBJECT(s->iothread));
>      s->ctx = iothread_get_aio_context(s->iothread);
>  
>      /* Prevent block operations that conflict with data plane thread */

Reviewed-by: Fam Zheng <famz@redhat.com>
Kevin Wolf March 19, 2014, 8:46 a.m. UTC | #2
Am 18.03.2014 um 17:50 hat Stefan Hajnoczi geschrieben:
> When creating an IOThread implicitly (the user did not specify
> x-iothread=<id>) remember that iothread_find() does not return the
> object with an incremented refcount.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

Thanks, applied to the block branch for qemu 2.0.

Kevin
diff mbox

Patch

diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index a5afc21..f558b45 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -393,7 +393,6 @@  void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
     if (blk->iothread) {
         s->internal_iothread = false;
         s->iothread = blk->iothread;
-        object_ref(OBJECT(s->iothread));
     } else {
         /* Create per-device IOThread if none specified */
         Error *local_err = NULL;
@@ -408,6 +407,7 @@  void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
         s->iothread = iothread_find(vdev->name);
         assert(s->iothread);
     }
+    object_ref(OBJECT(s->iothread));
     s->ctx = iothread_get_aio_context(s->iothread);
 
     /* Prevent block operations that conflict with data plane thread */