From c7f7c94e96a3ca3b6ee08f2709863c82e301de41 Mon Sep 17 00:00:00 2001 From: phk 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/fdc') diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index 68786b6..1dfa399 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.1