From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O7BTC-0000xa-Fc for qemu-devel@nongnu.org; Wed, 28 Apr 2010 13:54:46 -0400 Received: from [140.186.70.92] (port=44126 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O7BTA-0000wp-Pb for qemu-devel@nongnu.org; Wed, 28 Apr 2010 13:54:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O7BT8-0007TA-T6 for qemu-devel@nongnu.org; Wed, 28 Apr 2010 13:54:44 -0400 Received: from mail-qy0-f188.google.com ([209.85.221.188]:61628) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O7BT8-0007Sx-PT for qemu-devel@nongnu.org; Wed, 28 Apr 2010 13:54:42 -0400 Received: by qyk26 with SMTP id 26so9143339qyk.19 for ; Wed, 28 Apr 2010 10:54:42 -0700 (PDT) Message-ID: <4BD8765E.1080107@codemonkey.ws> Date: Wed, 28 Apr 2010 12:54:38 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1272371652-23087-1-git-send-email-amit.shah@redhat.com> <1272371652-23087-2-git-send-email-amit.shah@redhat.com> In-Reply-To: <1272371652-23087-2-git-send-email-amit.shah@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH v6 01/18] virtio-serial: save/load: Ensure target has enough ports List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Amit Shah Cc: qemu list , Juan Quintela Applied 1-17. Thanks. Regards, Anthony Liguori On 04/27/2010 07:33 AM, Amit Shah wrote: > The target could be started with max_nr_ports for a virtio-serial device > lesser than what was available on the source machine. Fail the migration > in such a case. > > Signed-off-by: Amit Shah > Reported-by: Juan Quintela > --- > hw/virtio-serial-bus.c | 13 +++++++++++-- > 1 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c > index 17c1ec1..9a7f0c1 100644 > --- a/hw/virtio-serial-bus.c > +++ b/hw/virtio-serial-bus.c > @@ -374,10 +374,13 @@ static void virtio_serial_save(QEMUFile *f, void *opaque) > > /* Items in struct VirtIOSerial */ > > + qemu_put_be32s(f,&s->bus->max_nr_ports); > + > /* Do this because we might have hot-unplugged some ports */ > nr_active_ports = 0; > - QTAILQ_FOREACH(port,&s->ports, next) > + QTAILQ_FOREACH(port,&s->ports, next) { > nr_active_ports++; > + } > > qemu_put_be32s(f,&nr_active_ports); > > @@ -399,7 +402,7 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id) > { > VirtIOSerial *s = opaque; > VirtIOSerialPort *port; > - uint32_t nr_active_ports; > + uint32_t max_nr_ports, nr_active_ports; > unsigned int i; > > if (version_id> 2) { > @@ -420,6 +423,12 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id) > > /* Items in struct VirtIOSerial */ > > + qemu_get_be32s(f,&max_nr_ports); > + if (max_nr_ports> s->bus->max_nr_ports) { > + /* Source could have more ports than us. Fail migration. */ > + return -EINVAL; > + } > + > qemu_get_be32s(f,&nr_active_ports); > > /* Items in struct VirtIOSerialPort */ >