From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SUbMf-00066P-7j for qemu-devel@nongnu.org; Wed, 16 May 2012 06:22:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SUbMZ-0001yS-BC for qemu-devel@nongnu.org; Wed, 16 May 2012 06:21:52 -0400 Received: from mail-pz0-f45.google.com ([209.85.210.45]:43612) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SUbMZ-0001yD-1a for qemu-devel@nongnu.org; Wed, 16 May 2012 06:21:47 -0400 Received: by dadv2 with SMTP id v2so1028464dad.4 for ; Wed, 16 May 2012 03:21:45 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Wed, 16 May 2012 12:21:35 +0200 Message-Id: <1337163695-22379-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 1.1] virtio: check virtio_load return code List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Orit Wassermann , Ulrich Obergfell From: Orit Wassermann Otherwise we crash on error. Signed-off-by: Ulrich Obergfell Signed-off-by: Orit Wassermann Signed-off-by: Paolo Bonzini --- hw/virtio-balloon.c | 6 +++++- hw/virtio-blk.c | 7 ++++++- hw/virtio-net.c | 6 +++++- hw/virtio-scsi.c | 7 ++++++- hw/virtio-serial-bus.c | 6 +++++- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c index ce9d2c9..075ed87 100644 --- a/hw/virtio-balloon.c +++ b/hw/virtio-balloon.c @@ -211,11 +211,15 @@ static void virtio_balloon_save(QEMUFile *f, void *opaque) static int virtio_balloon_load(QEMUFile *f, void *opaque, int version_id) { VirtIOBalloon *s = opaque; + int ret; if (version_id != 1) return -EINVAL; - virtio_load(&s->vdev, f); + ret = virtio_load(&s->vdev, f); + if (ret) { + return ret; + } s->num_pages = qemu_get_be32(f); s->actual = qemu_get_be32(f); diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c index 12312ea..73b411f 100644 --- a/hw/virtio-blk.c +++ b/hw/virtio-blk.c @@ -533,11 +533,16 @@ static void virtio_blk_save(QEMUFile *f, void *opaque) static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id) { VirtIOBlock *s = opaque; + int ret; if (version_id != 2) return -EINVAL; - virtio_load(&s->vdev, f); + ret = virtio_load(&s->vdev, f); + if (ret) { + return ret; + } + while (qemu_get_sbyte(f)) { VirtIOBlockReq *req = virtio_blk_alloc_request(s); qemu_get_buffer(f, (unsigned char*)&req->elem, sizeof(req->elem)); diff --git a/hw/virtio-net.c b/hw/virtio-net.c index bc5e3a8..3f190d4 100644 --- a/hw/virtio-net.c +++ b/hw/virtio-net.c @@ -891,11 +891,15 @@ static int virtio_net_load(QEMUFile *f, void *opaque, int version_id) { VirtIONet *n = opaque; int i; + int ret; if (version_id < 2 || version_id > VIRTIO_NET_VM_VERSION) return -EINVAL; - virtio_load(&n->vdev, f); + ret = virtio_load(&n->vdev, f); + if (ret) { + return ret; + } qemu_get_buffer(f, n->mac, ETH_ALEN); n->tx_waiting = qemu_get_be32(f); diff --git a/hw/virtio-scsi.c b/hw/virtio-scsi.c index e8328f4..5e39ce9 100644 --- a/hw/virtio-scsi.c +++ b/hw/virtio-scsi.c @@ -564,7 +564,12 @@ static void virtio_scsi_save(QEMUFile *f, void *opaque) static int virtio_scsi_load(QEMUFile *f, void *opaque, int version_id) { VirtIOSCSI *s = opaque; - virtio_load(&s->vdev, f); + int ret; + + ret = virtio_load(&s->vdev, f); + if (ret) { + return ret; + } return 0; } diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c index ffbdfc2..72287d1 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -637,13 +637,17 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id) VirtIOSerialPort *port; uint32_t max_nr_ports, nr_active_ports, ports_map; unsigned int i; + int ret; if (version_id > 3) { return -EINVAL; } /* The virtio device */ - virtio_load(&s->vdev, f); + ret = virtio_load(&s->vdev, f); + if (ret) { + return ret; + } if (version_id < 2) { return 0; -- 1.7.10.1