|
From: | Matthew Rosato |
Subject: | Re: [PATCH 04/11] s390x/pci: Fix harmless mistake in zpci's property fid's setter |
Date: | Mon, 27 Apr 2020 10:11:05 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 |
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 <address@hidden> Cc: Cornelia Huck <address@hidden> Signed-off-by: Markus Armbruster <address@hidden> --- 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?
[Prev in Thread] | Current Thread | [Next in Thread] |