xen/pt: Fix flawed conversion to realize()
The conversion of xen_pt_initfn() to xen_pt_realize() blindly replaced
XEN_PT_ERR() by error_setg(). Several error conditions that did not
fail xen_pt_initfn() now fail xen_pt_realize(). Unsurprisingly, the
cleanup on these errors looks highly suspicious.
Revert the inappropriate replacements.
Fixes: 5a11d0f754
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: Paul Durrant <paul@xen.org>
Cc: xen-devel@lists.xenproject.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Message-Id: <20200422130719.28225-10-armbru@redhat.com>
This commit is contained in:
parent
843c4cfcf4
commit
c61d1d9e49
@ -858,8 +858,8 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
|
||||
|
||||
rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
|
||||
if (rc < 0) {
|
||||
error_setg_errno(errp, errno, "Mapping machine irq %u to"
|
||||
" pirq %i failed", machine_irq, pirq);
|
||||
XEN_PT_ERR(d, "Mapping machine irq %u to pirq %i failed, (err: %d)\n",
|
||||
machine_irq, pirq, errno);
|
||||
|
||||
/* Disable PCI intx assertion (turn on bit10 of devctl) */
|
||||
cmd |= PCI_COMMAND_INTX_DISABLE;
|
||||
@ -880,8 +880,8 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
|
||||
PCI_SLOT(d->devfn),
|
||||
e_intx);
|
||||
if (rc < 0) {
|
||||
error_setg_errno(errp, errno, "Binding of interrupt %u failed",
|
||||
e_intx);
|
||||
XEN_PT_ERR(d, "Binding of interrupt %i failed! (err: %d)\n",
|
||||
e_intx, errno);
|
||||
|
||||
/* Disable PCI intx assertion (turn on bit10 of devctl) */
|
||||
cmd |= PCI_COMMAND_INTX_DISABLE;
|
||||
@ -889,8 +889,8 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
|
||||
|
||||
if (xen_pt_mapped_machine_irq[machine_irq] == 0) {
|
||||
if (xc_physdev_unmap_pirq(xen_xc, xen_domid, machine_irq)) {
|
||||
error_setg_errno(errp, errno, "Unmapping of machine"
|
||||
" interrupt %u failed", machine_irq);
|
||||
XEN_PT_ERR(d, "Unmapping of machine interrupt %i failed!"
|
||||
" (err: %d)\n", machine_irq, errno);
|
||||
}
|
||||
}
|
||||
s->machine_irq = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user