summaryrefslogtreecommitdiff
path: root/sys/miscfs/procfs/procfs_linux.c
diff options
context:
space:
mode:
authorad <ad@NetBSD.org>2008-05-31 21:34:42 +0000
committerad <ad@NetBSD.org>2008-05-31 21:34:42 +0000
commit736a4d9b7870c657841320ebee34cd39d1c751e5 (patch)
tree34a6e5935acd27b7f080bef3259dd8e5aed60404 /sys/miscfs/procfs/procfs_linux.c
parent2feabc3836655ae625f5a48e800ef0075107f3ad (diff)
Kill devsw_lock and just use specfs_lock. The two would need merging
in order to prevent unload of modules when a device that they provide is still open.
Diffstat (limited to 'sys/miscfs/procfs/procfs_linux.c')
-rw-r--r--sys/miscfs/procfs/procfs_linux.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/miscfs/procfs/procfs_linux.c b/sys/miscfs/procfs/procfs_linux.c
index e38757bbe25..070973ca44d 100644
--- a/sys/miscfs/procfs/procfs_linux.c
+++ b/sys/miscfs/procfs/procfs_linux.c
@@ -1,4 +1,4 @@
-/* $NetBSD: procfs_linux.c,v 1.53 2008/05/06 18:43:44 ad Exp $ */
+/* $NetBSD: procfs_linux.c,v 1.54 2008/05/31 21:34:42 ad Exp $ */
/*
* Copyright (c) 2001 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: procfs_linux.c,v 1.53 2008/05/06 18:43:44 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_linux.c,v 1.54 2008/05/31 21:34:42 ad Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -55,6 +55,8 @@ __KERNEL_RCSID(0, "$NetBSD: procfs_linux.c,v 1.53 2008/05/06 18:43:44 ad Exp $")
#include <sys/conf.h>
#include <miscfs/procfs/procfs.h>
+#include <miscfs/specfs/specdev.h>
+
#include <compat/linux/common/linux_exec.h>
#include <uvm/uvm_extern.h>
@@ -187,7 +189,6 @@ procfs_dodevices(struct lwp *curl, struct proc *p,
char *bf;
int offset = 0;
int i, error = ENAMETOOLONG;
- extern kmutex_t devsw_lock;
/* XXX elad - may need filtering. */
@@ -197,7 +198,7 @@ procfs_dodevices(struct lwp *curl, struct proc *p,
if (offset >= LBFSZ)
goto out;
- mutex_enter(&devsw_lock);
+ mutex_enter(&specfs_lock);
for (i = 0; i < max_devsw_convs; i++) {
if ((devsw_conv[i].d_name == NULL) ||
(devsw_conv[i].d_cmajor == -1))
@@ -206,14 +207,14 @@ procfs_dodevices(struct lwp *curl, struct proc *p,
offset += snprintf(&bf[offset], LBFSZ - offset,
"%3d %s\n", devsw_conv[i].d_cmajor, devsw_conv[i].d_name);
if (offset >= LBFSZ) {
- mutex_exit(&devsw_lock);
+ mutex_exit(&specfs_lock);
goto out;
}
}
offset += snprintf(&bf[offset], LBFSZ - offset, "\nBlock devices:\n");
if (offset >= LBFSZ) {
- mutex_exit(&devsw_lock);
+ mutex_exit(&specfs_lock);
goto out;
}
@@ -225,11 +226,11 @@ procfs_dodevices(struct lwp *curl, struct proc *p,
offset += snprintf(&bf[offset], LBFSZ - offset,
"%3d %s\n", devsw_conv[i].d_bmajor, devsw_conv[i].d_name);
if (offset >= LBFSZ) {
- mutex_exit(&devsw_lock);
+ mutex_exit(&specfs_lock);
goto out;
}
}
- mutex_exit(&devsw_lock);
+ mutex_exit(&specfs_lock);
error = uiomove_frombuf(bf, offset, uio);
out: