summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver/nfs_srvsubs.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-07-15 08:26:07 +0000
committerphk <phk@FreeBSD.org>2004-07-15 08:26:07 +0000
commit5c95d686a13bd79feeadb1a577394bf79788b6a0 (patch)
treeb1c0d2c6025d7b13a90af9a64c92d523b5997072 /sys/nfsserver/nfs_srvsubs.c
parenta2ba9d448dddaf9ca08b0de9a03349bb8c0dffe6 (diff)
downloadFreeBSD-src-5c95d686a13bd79feeadb1a577394bf79788b6a0.zip
FreeBSD-src-5c95d686a13bd79feeadb1a577394bf79788b6a0.tar.gz
Do a pass over all modules in the kernel and make them return EOPNOTSUPP
for unknown events. A number of modules return EINVAL in this instance, and I have left those alone for now and instead taught MOD_QUIESCE to accept this as "didn't do anything".
Diffstat (limited to 'sys/nfsserver/nfs_srvsubs.c')
-rw-r--r--sys/nfsserver/nfs_srvsubs.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index 326c3c5..77ba6e6 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -521,9 +521,9 @@ static const short *nfsrv_v3errmap[] = {
static int
nfsrv_modevent(module_t mod, int type, void *data)
{
+ int error = 0;
NET_LOCK_GIANT();
-
switch (type) {
case MOD_LOAD:
mtx_init(&nfsd_mtx, "nfsd_mtx", NULL, MTX_DEF);
@@ -556,10 +556,10 @@ nfsrv_modevent(module_t mod, int type, void *data)
sysent[SYS_nfssvc].sy_call = (sy_call_t *)nfssvc;
break;
- case MOD_UNLOAD:
+ case MOD_UNLOAD:
if (nfsrv_numnfsd != 0) {
- NET_UNLOCK_GIANT();
- return EBUSY;
+ error = EBUSY;
+ break;
}
callout_stop(&nfsrv_callout);
@@ -567,9 +567,12 @@ nfsrv_modevent(module_t mod, int type, void *data)
sysent[SYS_nfssvc].sy_call = nfs_prev_nfssvc_sy_call;
mtx_destroy(&nfsd_mtx);
break;
+ default:
+ error = EOPNOTSUPP;
+ break;
}
NET_UNLOCK_GIANT();
- return 0;
+ return error;
}
static moduledata_t nfsserver_mod = {
"nfsserver",
OpenPOWER on IntegriCloud