diff options
author | imp <imp@FreeBSD.org> | 2002-09-29 18:07:29 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2002-09-29 18:07:29 +0000 |
commit | 1e13fe949738da63e191078330127971c442f858 (patch) | |
tree | 47c5a5965b785a00ea2589c5e822d2afa15b324d | |
parent | a5210ff156817f4fcbe19651763e97aa0b51a807 (diff) | |
download | FreeBSD-src-1e13fe949738da63e191078330127971c442f858.zip FreeBSD-src-1e13fe949738da63e191078330127971c442f858.tar.gz |
Don't leak the bar list for each thing we allocate.
# This code really needs a rewrite
Spotted by the eagle eyes of: phk
-rw-r--r-- | sys/dev/cardbus/cardbus_cis.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/cardbus/cardbus_cis.c b/sys/dev/cardbus/cardbus_cis.c index 2d97b48..35d9186 100644 --- a/sys/dev/cardbus/cardbus_cis.c +++ b/sys/dev/cardbus/cardbus_cis.c @@ -739,6 +739,7 @@ cardbus_alloc_resources(device_t cbdev, device_t child) if (barlist[tmp]->res == NULL) { DEVPRINTF((cbdev, "Cannot pre-allocate " "memory for cardbus device\n")); + free(barlist, M_DEVBUF); return (ENOMEM); } barlist[tmp]->start = @@ -795,6 +796,7 @@ cardbus_alloc_resources(device_t cbdev, device_t child) if (barlist[tmp]->res == NULL) { DEVPRINTF((cbdev, "Cannot pre-allocate " "IO port for cardbus device\n")); + free(barlist, M_DEVBUF); return (ENOMEM); } barlist[tmp]->start = @@ -811,7 +813,6 @@ cardbus_alloc_resources(device_t cbdev, device_t child) } /* Allocate IRQ */ - /* XXX: Search CIS for IRQ description */ rid = 0; res = bus_alloc_resource(cbdev, SYS_RES_IRQ, &rid, 0, ~0UL, 1, RF_SHAREABLE); @@ -822,6 +823,7 @@ cardbus_alloc_resources(device_t cbdev, device_t child) dinfo->pci.cfg.intline = rman_get_start(res); pci_write_config(child, PCIR_INTLINE, rman_get_start(res), 1); + free(barlist, M_DEVBUF); return (0); } |