From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZFKyx-0002s2-Vz for qemu-devel@nongnu.org; Wed, 15 Jul 2015 07:36:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZFKyu-00035b-PN for qemu-devel@nongnu.org; Wed, 15 Jul 2015 07:36:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39830) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZFKyu-00035V-Jz for qemu-devel@nongnu.org; Wed, 15 Jul 2015 07:36:08 -0400 References: <1436938201-16766-1-git-send-email-jasowang@redhat.com> <1436938201-16766-2-git-send-email-jasowang@redhat.com> <20150715110155.442078b5.cornelia.huck@de.ibm.com> From: Paolo Bonzini Message-ID: <55A645A1.50708@redhat.com> Date: Wed, 15 Jul 2015 13:36:01 +0200 MIME-Version: 1.0 In-Reply-To: <20150715110155.442078b5.cornelia.huck@de.ibm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH V2 1/5] virtio: get_features() can fail List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cornelia Huck , Jason Wang Cc: kwolf@redhat.com, Markus Armbruster , qemu-devel@nongnu.org, stefanha@redhat.com, mst@redhat.com On 15/07/2015 11:01, Cornelia Huck wrote: > > diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c > > index 3926f7e..febda76 100644 > > --- a/hw/virtio/virtio-bus.c > > +++ b/hw/virtio/virtio-bus.c > > @@ -54,7 +54,8 @@ void virtio_bus_device_plugged(VirtIODevice *vdev, Error **errp) > > > > /* Get the features of the plugged device. */ > > assert(vdc->get_features != NULL); > > - vdev->host_features = vdc->get_features(vdev, vdev->host_features); > > + vdev->host_features = vdc->get_features(vdev, vdev->host_features, > > + errp); > > } > > > > /* Reset the virtio_bus */ > > Don't you need to propagate the error instead of passing it through? Or > am I just confused by error handling? :) Explicit propagation is only needed if you need to look at the error (because errp could be NULL). Here you don't need to do that, so passing it through is fine. Error management is not hard if you know the rules (and the rules are not hard, just important). Someone needs to dig up Markus's latest explanation and put it in docs/. Paolo