diff options
-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); } |