diff options
author | 2011-06-19 04:55:33 +0000 | |
---|---|---|
committer | 2011-06-19 04:55:33 +0000 | |
commit | 5f30bcfc6889013054e2aa00e20a74642efb5e39 (patch) | |
tree | 679a1ce364b5534c11121cde7f83291d8f37c471 | |
parent | Minor cleanup for disk_lock() and disk_unlock(). (diff) | |
download | wireguard-openbsd-5f30bcfc6889013054e2aa00e20a74642efb5e39.tar.xz wireguard-openbsd-5f30bcfc6889013054e2aa00e20a74642efb5e39.zip |
Use disk_lock_nointr() in the xxclose() routines so that they cannot
be interrupted.
ok matthew
-rw-r--r-- | sys/arch/hp300/dev/hd.c | 8 | ||||
-rw-r--r-- | sys/arch/octeon/dev/octcf.c | 10 | ||||
-rw-r--r-- | sys/dev/ata/wd.c | 10 | ||||
-rw-r--r-- | sys/dev/flash.c | 8 | ||||
-rw-r--r-- | sys/dev/vnd.c | 7 | ||||
-rw-r--r-- | sys/scsi/cd.c | 8 | ||||
-rw-r--r-- | sys/scsi/sd.c | 8 |
7 files changed, 19 insertions, 40 deletions
diff --git a/sys/arch/hp300/dev/hd.c b/sys/arch/hp300/dev/hd.c index c742eb48971..b15bf3ddcf5 100644 --- a/sys/arch/hp300/dev/hd.c +++ b/sys/arch/hp300/dev/hd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: hd.c,v 1.66 2011/06/19 04:35:06 deraadt Exp $ */ +/* $OpenBSD: hd.c,v 1.67 2011/06/19 04:55:34 deraadt Exp $ */ /* $NetBSD: rd.c,v 1.33 1997/07/10 18:14:08 kleink Exp $ */ /* @@ -602,16 +602,12 @@ hdclose(dev, flag, mode, p) struct hd_softc *rs; struct disk *dk; int mask, s; - int error; rs = hdlookup(unit); if (rs == NULL) return (ENXIO); - if ((error = disk_lock(&rs->sc_dkdev)) != 0) { - device_unref(&rs->sc_dev); - return (error); - } + disk_lock_nointr(&rs->sc_dkdev); mask = 1 << DISKPART(dev); dk = &rs->sc_dkdev; diff --git a/sys/arch/octeon/dev/octcf.c b/sys/arch/octeon/dev/octcf.c index 208fcff2b82..a6879e15e0f 100644 --- a/sys/arch/octeon/dev/octcf.c +++ b/sys/arch/octeon/dev/octcf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: octcf.c,v 1.5 2011/06/19 04:35:06 deraadt Exp $ */ +/* $OpenBSD: octcf.c,v 1.6 2011/06/19 04:55:34 deraadt Exp $ */ /* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */ /* @@ -510,15 +510,14 @@ octcfclose(dev_t dev, int flag, int fmt, struct proc *p) { struct octcf_softc *wd; int part = DISKPART(dev); - int error = 0; wd = octcflookup(DISKUNIT(dev)); if (wd == NULL) return ENXIO; OCTCFDEBUG_PRINT(("octcfclose\n"), DEBUG_FUNCS); - if ((error = disk_lock(&wd->sc_dk)) != 0) - goto exit; + + disk_lock_nointr(&wd->sc_dk); switch (fmt) { case S_IFCHR: @@ -533,9 +532,8 @@ octcfclose(dev_t dev, int flag, int fmt, struct proc *p) disk_unlock(&wd->sc_dk); - exit: device_unref(&wd->sc_dev); - return (error); + return (0); } void diff --git a/sys/dev/ata/wd.c b/sys/dev/ata/wd.c index 145a42256b5..d5e95cb6295 100644 --- a/sys/dev/ata/wd.c +++ b/sys/dev/ata/wd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wd.c,v 1.104 2011/06/19 04:35:06 deraadt Exp $ */ +/* $OpenBSD: wd.c,v 1.105 2011/06/19 04:55:34 deraadt Exp $ */ /* $NetBSD: wd.c,v 1.193 1999/02/28 17:15:27 explorer Exp $ */ /* @@ -734,15 +734,14 @@ wdclose(dev_t dev, int flag, int fmt, struct proc *p) { struct wd_softc *wd; int part = DISKPART(dev); - int error = 0; wd = wdlookup(DISKUNIT(dev)); if (wd == NULL) return ENXIO; WDCDEBUG_PRINT(("wdclose\n"), DEBUG_FUNCS); - if ((error = disk_lock(&wd->sc_dk)) != 0) - goto exit; + + disk_lock_nointr(&wd->sc_dk); switch (fmt) { case S_IFCHR: @@ -762,9 +761,8 @@ wdclose(dev_t dev, int flag, int fmt, struct proc *p) disk_unlock(&wd->sc_dk); - exit: device_unref(&wd->sc_dev); - return (error); + return (0); } void diff --git a/sys/dev/flash.c b/sys/dev/flash.c index 497ce1e659f..27215ce1c14 100644 --- a/sys/dev/flash.c +++ b/sys/dev/flash.c @@ -1,4 +1,4 @@ -/* $OpenBSD: flash.c,v 1.22 2011/06/19 04:35:03 deraadt Exp $ */ +/* $OpenBSD: flash.c,v 1.23 2011/06/19 04:55:33 deraadt Exp $ */ /* * Copyright (c) 2005 Uwe Stuehler <uwe@openbsd.org> @@ -739,17 +739,13 @@ int flashclose(dev_t dev, int fflag, int devtype, struct proc *p) { struct flash_softc *sc; - int error; int part; sc = flashlookup(flashunit(dev)); if (sc == NULL) return ENXIO; - if ((error = disk_lock(&sc->sc_dk)) != 0) { - device_unref(&sc->sc_dev); - return error; - } + disk_lock_nointr(&sc->sc_dk); /* Close one open partition. */ part = flashpart(dev); diff --git a/sys/dev/vnd.c b/sys/dev/vnd.c index 9d0199deb3d..9b1f52c8e50 100644 --- a/sys/dev/vnd.c +++ b/sys/dev/vnd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vnd.c,v 1.129 2011/06/19 04:35:03 deraadt Exp $ */ +/* $OpenBSD: vnd.c,v 1.130 2011/06/19 04:55:33 deraadt Exp $ */ /* $NetBSD: vnd.c,v 1.26 1996/03/30 23:06:11 christos Exp $ */ /* @@ -268,7 +268,7 @@ vndclose(dev_t dev, int flags, int mode, struct proc *p) { int unit = vndunit(dev); struct vnd_softc *sc; - int error = 0, part; + int part; DNPRINTF(VDB_FOLLOW, "vndclose(%x, %x, %x, %p)\n", dev, flags, mode, p); @@ -276,8 +276,7 @@ vndclose(dev_t dev, int flags, int mode, struct proc *p) return (ENXIO); sc = &vnd_softc[unit]; - if ((error = disk_lock(&sc->sc_dk)) != 0) - return (error); + disk_lock_nointr(&sc->sc_dk); part = DISKPART(dev); diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c index c3d07e90f1b..f0f61b20703 100644 --- a/sys/scsi/cd.c +++ b/sys/scsi/cd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cd.c,v 1.203 2011/06/19 04:35:06 deraadt Exp $ */ +/* $OpenBSD: cd.c,v 1.204 2011/06/19 04:55:34 deraadt Exp $ */ /* $NetBSD: cd.c,v 1.100 1997/04/02 02:29:30 mycroft Exp $ */ /* @@ -422,7 +422,6 @@ cdclose(dev_t dev, int flag, int fmt, struct proc *p) { struct cd_softc *sc; int part = DISKPART(dev); - int error; sc = cdlookup(DISKUNIT(dev)); if (sc == NULL) @@ -432,10 +431,7 @@ cdclose(dev_t dev, int flag, int fmt, struct proc *p) return (ENXIO); } - if ((error = disk_lock(&sc->sc_dk)) != 0) { - device_unref(&sc->sc_dev); - return error; - } + disk_lock_nointr(&sc->sc_dk); switch (fmt) { case S_IFCHR: diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c index 00b500266de..b3228c478a7 100644 --- a/sys/scsi/sd.c +++ b/sys/scsi/sd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sd.c,v 1.229 2011/06/19 04:35:06 deraadt Exp $ */ +/* $OpenBSD: sd.c,v 1.230 2011/06/19 04:55:34 deraadt Exp $ */ /* $NetBSD: sd.c,v 1.111 1997/04/02 02:29:41 mycroft Exp $ */ /*- @@ -472,7 +472,6 @@ sdclose(dev_t dev, int flag, int fmt, struct proc *p) { struct sd_softc *sc; int part = DISKPART(dev); - int error; sc = sdlookup(DISKUNIT(dev)); if (sc == NULL) @@ -482,10 +481,7 @@ sdclose(dev_t dev, int flag, int fmt, struct proc *p) return (ENXIO); } - if ((error = disk_lock(&sc->sc_dk)) != 0) { - device_unref(&sc->sc_dev); - return (error); - } + disk_lock_nointr(&sc->sc_dk); switch (fmt) { case S_IFCHR: |