summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authormlelstv <mlelstv@NetBSD.org>2021-06-02 17:56:40 +0000
committermlelstv <mlelstv@NetBSD.org>2021-06-02 17:56:40 +0000
commit356da1cb7fbbb96b0f64a5ee97d4949fbb8dbbc9 (patch)
tree0882895e15ae4aaeeca29dec333f9854bbb186d4 /sys
parent7b8ab91a4d506f438ffeb245c57b2948718f8ea1 (diff)
Clear sc_mode only on last close.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/dkwedge/dk.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/dkwedge/dk.c b/sys/dev/dkwedge/dk.c
index b86d026a46e..b637ba6734b 100644
--- a/sys/dev/dkwedge/dk.c
+++ b/sys/dev/dkwedge/dk.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dk.c,v 1.104 2021/06/02 15:59:08 mlelstv Exp $ */
+/* $NetBSD: dk.c,v 1.105 2021/06/02 17:56:40 mlelstv Exp $ */
/*-
* Copyright (c) 2004, 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.104 2021/06/02 15:59:08 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dk.c,v 1.105 2021/06/02 17:56:40 mlelstv Exp $");
#ifdef _KERNEL_OPT
#include "opt_dkwedge.h"
@@ -1221,6 +1221,7 @@ dklastclose(struct dkwedge_softc *sc)
KASSERT(sc->sc_parent->dk_rawvp != NULL);
vp = sc->sc_parent->dk_rawvp;
sc->sc_parent->dk_rawvp = NULL;
+ sc->sc_mode = 0;
}
}
@@ -1264,9 +1265,7 @@ dkclose(dev_t dev, int flags, int fmt, struct lwp *l)
if (sc->sc_dk.dk_openmask == 0) {
error = dklastclose(sc); /* releases locks */
- sc->sc_mode = 0;
} else {
- sc->sc_mode = 0;
mutex_exit(&sc->sc_parent->dk_rawlock);
mutex_exit(&sc->sc_dk.dk_openlock);
}