PCI: ibmphp: Fix double unmap of io_mem

ebda_rsrc_controller() calls iounmap(io_mem) on the error path. Its caller,
ibmphp_access_ebda(), also calls iounmap(io_mem) on good and error paths.

Remove the iounmap(io_mem) invocation from ebda_rsrc_controller().

[bhelgaas: remove item from TODO]
Link: https://lore.kernel.org/r/20210818165751.591185-1-os.vaslot@gmail.com
Signed-off-by: Vishal Aslot <os.vaslot@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
Vishal Aslot
2021-08-18 11:57:51 -05:00
committed by Bjorn Helgaas
parent e73f0f0ee7
commit faa2e05ad0
2 changed files with 1 additions and 7 deletions

View File

@@ -40,9 +40,6 @@ ibmphp:
* The return value of pci_hp_register() is not checked. * The return value of pci_hp_register() is not checked.
* iounmap(io_mem) is called in the error path of ebda_rsrc_controller()
and once more in the error path of its caller ibmphp_access_ebda().
* The various slot data structures are difficult to follow and need to be * The various slot data structures are difficult to follow and need to be
simplified. A lot of functions are too large and too complex, they need simplified. A lot of functions are too large and too complex, they need
to be broken up into smaller, manageable pieces. Negative examples are to be broken up into smaller, manageable pieces. Negative examples are

View File

@@ -714,8 +714,7 @@ static int __init ebda_rsrc_controller(void)
/* init hpc structure */ /* init hpc structure */
hpc_ptr = alloc_ebda_hpc(slot_num, bus_num); hpc_ptr = alloc_ebda_hpc(slot_num, bus_num);
if (!hpc_ptr) { if (!hpc_ptr) {
rc = -ENOMEM; return -ENOMEM;
goto error_no_hpc;
} }
hpc_ptr->ctlr_id = ctlr_id; hpc_ptr->ctlr_id = ctlr_id;
hpc_ptr->ctlr_relative_id = ctlr; hpc_ptr->ctlr_relative_id = ctlr;
@@ -910,8 +909,6 @@ error:
kfree(tmp_slot); kfree(tmp_slot);
error_no_slot: error_no_slot:
free_ebda_hpc(hpc_ptr); free_ebda_hpc(hpc_ptr);
error_no_hpc:
iounmap(io_mem);
return rc; return rc;
} }