Matthew Rosato <mjros...@linux.ibm.com> writes: > On 4/24/20 3:20 PM, Markus Armbruster wrote: >> s390_pci_set_fid() sets zpci->fid_defined to true even when >> visit_type_uint32() failed. Reproducer: "-device zpci,fid=junk". >> Harmless in practice, because qdev_device_add() then fails, throwing >> away @zpci. Fix it anyway. >> >> Cc: Matthew Rosato <mjros...@linux.ibm.com> >> Cc: Cornelia Huck <coh...@redhat.com> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> --- >> hw/s390x/s390-pci-bus.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c >> index ed8be124da..19ee1f02bb 100644 >> --- a/hw/s390x/s390-pci-bus.c >> +++ b/hw/s390x/s390-pci-bus.c >> @@ -1276,7 +1276,9 @@ static void s390_pci_set_fid(Object *obj, Visitor *v, >> const char *name, >> return; >> } >> - visit_type_uint32(v, name, ptr, errp); >> + if (!visit_type_uint32(v, name, ptr, errp)) { >> + return; >> + } > > Hi Markus, > > Am I missing something here (a preceding patch maybe?) -- > visit_type_uint32 is a void function. A quick look, no other callers > are checking it for a return value either... > > The error value might get set in visit_type_uintN though. Taking a > hint from other places that handle this sort of case (ex: > cpu_max_set_sve_max_vq), maybe something like: > > Error *err = NULL; > ... > visit_type_uint32(v, name, ptr, &err); > if (err) { > error_propogate(errp, err); > return; > } > zpci->fid_defined = true; > > Instead?
This patch crept into this series by mistake. It indeed depends on other work I haven't published, yet. Thanks, and sorry for wasting your time!