From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UZh1g-0000kA-Ag for qemu-devel@nongnu.org; Tue, 07 May 2013 08:29:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UZh1b-0001Z7-Jv for qemu-devel@nongnu.org; Tue, 07 May 2013 08:29:48 -0400 Received: from greensocs.com ([87.106.252.221]:46940 helo=s15328186.onlinehome-server.info) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UZh1b-0001Yw-DT for qemu-devel@nongnu.org; Tue, 07 May 2013 08:29:43 -0400 Message-ID: <5188F3B2.2040109@greensocs.com> Date: Tue, 07 May 2013 14:29:38 +0200 From: =?ISO-8859-1?Q?KONRAD_Fr=E9d=E9ric?= MIME-Version: 1.0 References: <20130507102223.GA16878@redhat.com> In-Reply-To: <20130507102223.GA16878@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] virtio-net: require that config size is initialized List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: Peter Maydell , Anthony Liguori , Jason Wang , qemu-devel@nongnu.org, Stefan Hajnoczi , Paolo Bonzini Hi, I think it is not a good idea, as we wanted to make VirtIODevice hot-pluggable for virtio-mmio. Maybe we can use a callback which is called by virtio-bus before plugging, to ensure that this config size is computed? On 07/05/2013 12:22, Michael S. Tsirkin wrote: > All buses do this, and if they don't they get subtle > bugs related to cross version migration. > Let's add an assert to catch these bugs early. > > Signed-off-by: Michael S. Tsirkin > --- > > Just a cleanup so not 1.5 material. > Seems to work fine here - any opinions? > > hw/net/virtio-net.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index 908e7b8..f0a9272 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -1282,6 +1282,8 @@ static int virtio_net_device_init(VirtIODevice *vdev) > DeviceState *qdev = DEVICE(vdev); > VirtIONet *n = VIRTIO_NET(vdev); > > + /* Verify that config size has been initialized */ > + assert(n->config_size != (size_t)-1); > virtio_init(VIRTIO_DEVICE(n), "virtio-net", VIRTIO_ID_NET, > n->config_size); > > @@ -1386,10 +1388,9 @@ static void virtio_net_instance_init(Object *obj) > VirtIONet *n = VIRTIO_NET(obj); > > /* > - * The default config_size is sizeof(struct virtio_net_config). > - * Can be overriden with virtio_net_set_config_size. > + * The config_size must be set later with virtio_net_set_config_size. > */ > - n->config_size = sizeof(struct virtio_net_config); > + n->config_size = (size_t)-1; > } > > static Property virtio_net_properties[] = {