summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata/atapi-fd.c
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2000-01-07 12:01:01 +0000
committersos <sos@FreeBSD.org>2000-01-07 12:01:01 +0000
commite27e6546b6b4db784cc995f88f0dbc78983b9e34 (patch)
tree108d074ddec1f605a4d48b96d46ea7deb22ea4b9 /sys/dev/ata/atapi-fd.c
parent5bcc2e4ffea6487b318aae68394a8cff50d607d4 (diff)
downloadFreeBSD-src-e27e6546b6b4db784cc995f88f0dbc78983b9e34.zip
FreeBSD-src-e27e6546b6b4db784cc995f88f0dbc78983b9e34.tar.gz
Guard against transfers of zero length given to *strategy.
Diffstat (limited to 'sys/dev/ata/atapi-fd.c')
-rw-r--r--sys/dev/ata/atapi-fd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/dev/ata/atapi-fd.c b/sys/dev/ata/atapi-fd.c
index 6c45f6f..f8e3291 100644
--- a/sys/dev/ata/atapi-fd.c
+++ b/sys/dev/ata/atapi-fd.c
@@ -254,6 +254,13 @@ afdstrategy(struct buf *bp)
struct afd_softc *fdp = bp->b_dev->si_drv1;
int32_t s;
+ /* if it's a null transfer, return immediatly. */
+ if (bp->b_bcount == 0) {
+ bp->b_resid = 0;
+ biodone(bp);
+ return;
+ }
+
s = splbio();
bufq_insert_tail(&fdp->buf_queue, bp);
afd_start(fdp);
@@ -267,7 +274,7 @@ afd_start(struct afd_softc *fdp)
u_int32_t lba, count;
int8_t ccb[16];
int8_t *data_ptr;
-
+
if (!bp)
return;
OpenPOWER on IntegriCloud