summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2011-06-19 04:55:33 +0000
committerderaadt <deraadt@openbsd.org>2011-06-19 04:55:33 +0000
commit5f30bcfc6889013054e2aa00e20a74642efb5e39 (patch)
tree679a1ce364b5534c11121cde7f83291d8f37c471
parentMinor cleanup for disk_lock() and disk_unlock(). (diff)
downloadwireguard-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.c8
-rw-r--r--sys/arch/octeon/dev/octcf.c10
-rw-r--r--sys/dev/ata/wd.c10
-rw-r--r--sys/dev/flash.c8
-rw-r--r--sys/dev/vnd.c7
-rw-r--r--sys/scsi/cd.c8
-rw-r--r--sys/scsi/sd.c8
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: