From 02aad38c79d3dba57d938c05e559fca9797fa85a Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Fri, 13 Sep 2002 11:37:38 +0000 Subject: Fix a bug were a struct bio was freed and certain members subsequently examined. Use biowait() instead of DIY. --- sys/dev/fdc/fdc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sys/dev') diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index 68786b6dc508..1dfa3994d7a9 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.c @@ -2561,6 +2561,7 @@ fdmisccmd(dev_t dev, u_int cmd, void *data) struct fd_formb *finfo; struct fdc_readid *idfield; size_t fdblk; + int error; fdu = FDUNIT(minor(dev)); fd = devclass_get_softc(fd_devclass, fdu); @@ -2602,11 +2603,9 @@ fdmisccmd(dev_t dev, u_int cmd, void *data) * for the current context. */ fdstrategy(bp); - while ((bp->bio_flags & BIO_DONE) == 0) - tsleep(bp, PRIBIO, "fdcmd", 0); - + error = biowait(bp, "fdcmd"); free(bp, M_TEMP); - return (bp->bio_flags & BIO_ERROR ? bp->bio_error : 0); + return (error); } static int -- cgit v1.3