virtio-scsi: Plug memory leak on virtio_scsi_push_event() error path
authorMarkus Armbruster <armbru@redhat.com>
Fri, 16 May 2014 15:44:06 +0000 (17:44 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 16 May 2014 15:52:28 +0000 (17:52 +0200)
Spotted by Coverity.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi/virtio-scsi.c

index b0d7517cb1273b453498ec7fa096ef754bd8b9d1..91a62ce0bd2bb886770d660946a2a8c7221d74e4 100644 (file)
@@ -489,7 +489,7 @@ static void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
                                    uint32_t event, uint32_t reason)
 {
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
-    VirtIOSCSIReq *req = virtio_scsi_pop_req(s, vs->event_vq);
+    VirtIOSCSIReq *req;
     VirtIOSCSIEvent *evt;
     VirtIODevice *vdev = VIRTIO_DEVICE(s);
     int in_size;
@@ -498,6 +498,7 @@ static void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
         return;
     }
 
+    req = virtio_scsi_pop_req(s, vs->event_vq);
     if (!req) {
         s->events_dropped = true;
         return;