]> git.proxmox.com Git - qemu.git/commitdiff
virtio-scsi: allocate cmd_vqs array separately.
authorKONRAD Frederic <fred.konrad@greensocs.com>
Thu, 21 Mar 2013 14:15:12 +0000 (15:15 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Tue, 26 Mar 2013 14:26:34 +0000 (09:26 -0500)
Allocate/Free the cmd_vqs array separately to have a fixed size device.

Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Message-id: 1363875320-7985-3-git-send-email-fred.konrad@greensocs.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
hw/virtio-scsi.c
hw/virtio-scsi.h

index 55191c566c9217a7dc357329f963f61e552bdcc9..08fcb80b1b0a8b7c47326c6b368f5d8ef61b055d 100644 (file)
@@ -690,12 +690,12 @@ VirtIODevice *virtio_scsi_init(DeviceState *dev, VirtIOSCSIConf *proxyconf)
 {
     VirtIOSCSI *s;
     static int virtio_scsi_id;
-    size_t sz;
     int i;
 
-    sz = sizeof(VirtIOSCSI) + proxyconf->num_queues * sizeof(VirtQueue *);
     s = (VirtIOSCSI *)virtio_common_init("virtio-scsi", VIRTIO_ID_SCSI,
-                                         sizeof(VirtIOSCSIConfig), sz);
+                                         sizeof(VirtIOSCSIConfig),
+                                         sizeof(VirtIOSCSI));
+    s->cmd_vqs = g_malloc0(proxyconf->num_queues * sizeof(VirtQueue *));
 
     s->qdev = dev;
     s->conf = *proxyconf;
@@ -730,5 +730,6 @@ void virtio_scsi_exit(VirtIODevice *vdev)
 {
     VirtIOSCSI *s = (VirtIOSCSI *)vdev;
     unregister_savevm(s->qdev, "virtio-scsi", s);
+    g_free(s->cmd_vqs);
     virtio_cleanup(vdev);
 }
index 6a0a95e07b32ef634d65293a80628a3403e88d2f..fb83b67cf7e78dd62d26fe3fe4d11747ba454d7a 100644 (file)
@@ -44,7 +44,7 @@ typedef struct VirtIOSCSI {
     bool events_dropped;
     VirtQueue *ctrl_vq;
     VirtQueue *event_vq;
-    VirtQueue *cmd_vqs[0];
+    VirtQueue **cmd_vqs;
 } VirtIOSCSI;
 
 #define DEFINE_VIRTIO_SCSI_PROPERTIES(_state, _features_field, _conf_field) \