summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ata/ata-disk.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index 9193c65..8523c33 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -356,8 +356,12 @@ ad_start(struct ata_device *atadev)
return;
}
+ /* remove request from drive queue */
+ bioq_remove(&adp->queue, bp);
+
if (!(request = malloc(sizeof(struct ad_request), M_AD, M_NOWAIT|M_ZERO))) {
ata_prtdev(atadev, "out of memory in start\n");
+ biofinish(bp, NULL, ENOMEM);
return;
}
@@ -377,9 +381,6 @@ ad_start(struct ata_device *atadev)
/* insert in tag array */
adp->tags[tag] = request;
- /* remove from drive queue */
- bioq_remove(&adp->queue, bp);
-
/* link onto controller queue */
TAILQ_INSERT_TAIL(&atadev->channel->ata_queue, request, chain);
}
OpenPOWER on IntegriCloud