From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O6k1F-0005v9-N2 for qemu-devel@nongnu.org; Tue, 27 Apr 2010 08:36:05 -0400 Received: from [140.186.70.92] (port=51231 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O6k1D-0005uA-Pv for qemu-devel@nongnu.org; Tue, 27 Apr 2010 08:36:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O6k1C-0002iM-Fc for qemu-devel@nongnu.org; Tue, 27 Apr 2010 08:36:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44321) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O6k1C-0002iC-8M for qemu-devel@nongnu.org; Tue, 27 Apr 2010 08:36:02 -0400 From: Amit Shah Date: Tue, 27 Apr 2010 18:03:57 +0530 Message-Id: <1272371652-23087-4-git-send-email-amit.shah@redhat.com> In-Reply-To: <1272371652-23087-3-git-send-email-amit.shah@redhat.com> References: <1272371652-23087-1-git-send-email-amit.shah@redhat.com> <1272371652-23087-2-git-send-email-amit.shah@redhat.com> <1272371652-23087-3-git-send-email-amit.shah@redhat.com> Subject: [Qemu-devel] [PATCH v6 03/18] virtio-serial: save/load: Ensure we have hot-plugged ports instantiated List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Amit Shah , qemu list , Juan Quintela If some ports that were hot-plugged on the source are not available on the destination, fail migration instead of trying to deref a NULL pointer. Signed-off-by: Amit Shah Reported-by: Juan Quintela --- hw/virtio-serial-bus.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c index d31e62d..5316ef6 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -451,6 +451,13 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id) id = qemu_get_be32(f); port = find_port_by_id(s, id); + if (!port) { + /* + * The requested port was hot-plugged on the source but we + * don't have it + */ + return -EINVAL; + } port->guest_connected = qemu_get_byte(f); } -- 1.6.2.5