mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
m68k: Balance ioremap and iounmap in m68k/atari/hades-pci.c
Signed-off-by: Roel Kluin <12o3l@tiscali.nl> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0a8320b04c
commit
9676237991
1 changed files with 26 additions and 28 deletions
|
@ -376,8 +376,8 @@ struct pci_bus_info * __init init_hades_pci(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bus = kzalloc(sizeof(struct pci_bus_info), GFP_KERNEL);
|
bus = kzalloc(sizeof(struct pci_bus_info), GFP_KERNEL);
|
||||||
if (!bus)
|
if (unlikely(!bus))
|
||||||
return NULL;
|
goto iounmap_base_virt;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Claim resources. The m68k has no separate I/O space, both
|
* Claim resources. The m68k has no separate I/O space, both
|
||||||
|
@ -385,43 +385,25 @@ struct pci_bus_info * __init init_hades_pci(void)
|
||||||
* the I/O resources are requested in memory space as well.
|
* the I/O resources are requested in memory space as well.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (request_resource(&iomem_resource, &config_space) != 0)
|
if (unlikely(request_resource(&iomem_resource, &config_space) != 0))
|
||||||
{
|
goto free_bus;
|
||||||
kfree(bus);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request_resource(&iomem_resource, &io_space) != 0)
|
if (unlikely(request_resource(&iomem_resource, &io_space) != 0))
|
||||||
{
|
goto release_config_space;
|
||||||
release_resource(&config_space);
|
|
||||||
kfree(bus);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
bus->mem_space.start = HADES_MEM_BASE;
|
bus->mem_space.start = HADES_MEM_BASE;
|
||||||
bus->mem_space.end = HADES_MEM_BASE + HADES_MEM_SIZE - 1;
|
bus->mem_space.end = HADES_MEM_BASE + HADES_MEM_SIZE - 1;
|
||||||
bus->mem_space.name = pci_mem_name;
|
bus->mem_space.name = pci_mem_name;
|
||||||
#if 1
|
#if 1
|
||||||
if (request_resource(&iomem_resource, &bus->mem_space) != 0)
|
if (unlikely(request_resource(&iomem_resource, &bus->mem_space) != 0))
|
||||||
{
|
goto release_io_space;
|
||||||
release_resource(&io_space);
|
|
||||||
release_resource(&config_space);
|
|
||||||
kfree(bus);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
bus->io_space.start = pci_io_base_virt;
|
bus->io_space.start = pci_io_base_virt;
|
||||||
bus->io_space.end = pci_io_base_virt + HADES_VIRT_IO_SIZE - 1;
|
bus->io_space.end = pci_io_base_virt + HADES_VIRT_IO_SIZE - 1;
|
||||||
bus->io_space.name = pci_io_name;
|
bus->io_space.name = pci_io_name;
|
||||||
#if 1
|
#if 1
|
||||||
if (request_resource(&ioport_resource, &bus->io_space) != 0)
|
if (unlikely(request_resource(&ioport_resource, &bus->io_space) != 0))
|
||||||
{
|
goto release_bus_mem_space;
|
||||||
release_resource(&bus->mem_space);
|
|
||||||
release_resource(&io_space);
|
|
||||||
release_resource(&config_space);
|
|
||||||
kfree(bus);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Set hardware dependent functions.
|
* Set hardware dependent functions.
|
||||||
|
@ -438,5 +420,21 @@ struct pci_bus_info * __init init_hades_pci(void)
|
||||||
tt_mfp.active_edge &= ~0x27;
|
tt_mfp.active_edge &= ~0x27;
|
||||||
|
|
||||||
return bus;
|
return bus;
|
||||||
|
|
||||||
|
release_bus_mem_space:
|
||||||
|
release_resource(&bus->mem_space);
|
||||||
|
release_io_space:
|
||||||
|
release_resource(&io_space);
|
||||||
|
release_config_space:
|
||||||
|
release_resource(&config_space);
|
||||||
|
free_bus:
|
||||||
|
kfree(bus);
|
||||||
|
iounmap_base_virt:
|
||||||
|
iounmap((void *)pci_io_base_virt);
|
||||||
|
|
||||||
|
for (i = 0; i < N_SLOTS; i++)
|
||||||
|
iounmap((void *)pci_conf_base_virt[i]);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue