Message ID | 20210201153700.618946-1-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/pci: Have safer pcie_bus_realize() by checking error path | expand |
ping? On 2/1/21 4:37 PM, Philippe Mathieu-Daudé wrote: > While pci_bus_realize() currently does not use the Error* argument, > it would be an error to leave pcie_bus_realize() setting bus->flags > if pci_bus_realize() had failed. > > Fix by using a local Error* and return early (propagating the error) > if pci_bus_realize() failed. > > Reported-by: Markus Armbruster <armbru@redhat.com> > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > hw/pci/pci.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 512e9042ffa..0d12e94a02e 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -130,8 +130,13 @@ static void pci_bus_realize(BusState *qbus, Error **errp) > static void pcie_bus_realize(BusState *qbus, Error **errp) > { > PCIBus *bus = PCI_BUS(qbus); > + Error *local_err = NULL; > > - pci_bus_realize(qbus, errp); > + pci_bus_realize(qbus, &local_err); > + if (local_err) { > + error_propagate(errp, local_err); > + return; > + } > > /* > * A PCI-E bus can support extended config space if it's the root >
diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 512e9042ffa..0d12e94a02e 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -130,8 +130,13 @@ static void pci_bus_realize(BusState *qbus, Error **errp) static void pcie_bus_realize(BusState *qbus, Error **errp) { PCIBus *bus = PCI_BUS(qbus); + Error *local_err = NULL; - pci_bus_realize(qbus, errp); + pci_bus_realize(qbus, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } /* * A PCI-E bus can support extended config space if it's the root
While pci_bus_realize() currently does not use the Error* argument, it would be an error to leave pcie_bus_realize() setting bus->flags if pci_bus_realize() had failed. Fix by using a local Error* and return early (propagating the error) if pci_bus_realize() failed. Reported-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- hw/pci/pci.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)