summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2009-02-18 21:12:48 +0000
committermav <mav@FreeBSD.org>2009-02-18 21:12:48 +0000
commitd65edba75b0491010c980ca1f916473970fd0a6c (patch)
tree44270e1ad0da644763c3bb04a7f42172e8bdfec3
parent06c33a48b84173fe2b0b5f18a3505bf0f0d9ec04 (diff)
downloadFreeBSD-src-d65edba75b0491010c980ca1f916473970fd0a6c.zip
FreeBSD-src-d65edba75b0491010c980ca1f916473970fd0a6c.tar.gz
Make ch->dma.free() called symmetrically to ch->dma.alloc().
-rw-r--r--sys/dev/ata/ata-all.c5
-rw-r--r--sys/dev/ata/ata-pci.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index 228ee1d..0bda321 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -186,6 +186,11 @@ ata_detach(device_t dev)
bus_teardown_intr(dev, ch->r_irq, ch->ih);
bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq);
ch->r_irq = NULL;
+
+ /* free DMA resources if DMA HW present*/
+ if (ch->dma.free)
+ ch->dma.free(dev);
+
mtx_destroy(&ch->state_mtx);
mtx_destroy(&ch->queue_mtx);
return 0;
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index 68c209f..cbec410 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -544,14 +544,11 @@ ata_pcichannel_attach(device_t dev)
static int
ata_pcichannel_detach(device_t dev)
{
- struct ata_channel *ch = device_get_softc(dev);
int error;
if ((error = ata_detach(dev)))
return error;
- ch->dma.free(dev);
-
/* XXX SOS free resources for io and ctlio ?? */
return 0;
OpenPOWER on IntegriCloud