提交 636713ba 编写于 作者: L Laszlo Ersek 提交者: Luiz Capitulino

pci-assign: assigned_initfn(): set monitor error in common error handler

Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
Reviewed-by: NEric Blake <eblake@redhat.com>
Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
上级 ef47827a
...@@ -1756,14 +1756,14 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1756,14 +1756,14 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
Error *local_err = NULL; Error *local_err = NULL;
if (!kvm_enabled()) { if (!kvm_enabled()) {
error_report("pci-assign: error: requires KVM support"); error_setg(&local_err, "pci-assign requires KVM support");
return -1; goto exit_with_error;
} }
if (!dev->host.domain && !dev->host.bus && !dev->host.slot && if (!dev->host.domain && !dev->host.bus && !dev->host.slot &&
!dev->host.function) { !dev->host.function) {
error_report("pci-assign: error: no host device specified"); error_setg(&local_err, "no host device specified");
return -1; goto exit_with_error;
} }
/* /*
...@@ -1788,14 +1788,10 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1788,14 +1788,10 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
get_real_device(dev, &local_err); get_real_device(dev, &local_err);
if (local_err) { if (local_err) {
qerror_report_err(local_err);
error_free(local_err);
goto out; goto out;
} }
if (assigned_device_pci_cap_init(pci_dev, &local_err) < 0) { if (assigned_device_pci_cap_init(pci_dev, &local_err) < 0) {
qerror_report_err(local_err);
error_free(local_err);
goto out; goto out;
} }
...@@ -1803,8 +1799,6 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1803,8 +1799,6 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
if (dev->cap.available & ASSIGNED_DEVICE_CAP_MSIX) { if (dev->cap.available & ASSIGNED_DEVICE_CAP_MSIX) {
assigned_dev_register_msix_mmio(dev, &local_err); assigned_dev_register_msix_mmio(dev, &local_err);
if (local_err) { if (local_err) {
qerror_report_err(local_err);
error_free(local_err);
goto out; goto out;
} }
} }
...@@ -1814,8 +1808,6 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1814,8 +1808,6 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
dev->real_device.region_number, dev, dev->real_device.region_number, dev,
&local_err); &local_err);
if (local_err) { if (local_err) {
qerror_report_err(local_err);
error_free(local_err);
goto out; goto out;
} }
...@@ -1828,16 +1820,12 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1828,16 +1820,12 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
/* assign device to guest */ /* assign device to guest */
assign_device(dev, &local_err); assign_device(dev, &local_err);
if (local_err) { if (local_err) {
qerror_report_err(local_err);
error_free(local_err);
goto out; goto out;
} }
/* assign legacy INTx to the device */ /* assign legacy INTx to the device */
r = assign_intx(dev, &local_err); r = assign_intx(dev, &local_err);
if (r < 0) { if (r < 0) {
qerror_report_err(local_err);
error_free(local_err);
goto assigned_out; goto assigned_out;
} }
...@@ -1849,8 +1837,14 @@ static int assigned_initfn(struct PCIDevice *pci_dev) ...@@ -1849,8 +1837,14 @@ static int assigned_initfn(struct PCIDevice *pci_dev)
assigned_out: assigned_out:
deassign_device(dev); deassign_device(dev);
out: out:
free_assigned_device(dev); free_assigned_device(dev);
exit_with_error:
assert(local_err);
qerror_report_err(local_err);
error_free(local_err);
return -1; return -1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册