--- src/sys/dev/disk/aha/aha_isa.c 2005/09/11 13:03:16 1.5 +++ src/sys/dev/disk/aha/aha_isa.c 2005/09/11 13:23:10 1.6 @@ -253,29 +253,29 @@ aha_isa_attach(device_t dev) /*nsegments*/BUS_SPACE_UNRESTRICTED, /*maxsegsz*/BUS_SPACE_MAXSIZE_24BIT, /*flags*/0, &aha->parent_dmat) != 0) { - aha_free(aha); bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); + aha_free(aha); return (ENOMEM); } if (aha_init(aha)) { device_printf(dev, "init failed\n"); - aha_free(aha); bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); + aha_free(aha); return (ENOMEM); } error = aha_attach(aha); if (error) { device_printf(dev, "attach failed\n"); - aha_free(aha); bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); + aha_free(aha); return (error); } @@ -283,10 +283,10 @@ aha_isa_attach(device_t dev) &ih, NULL); if (error) { device_printf(dev, "Unable to register interrupt handler\n"); - aha_free(aha); bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); + aha_free(aha); return (error); }