summaryrefslogtreecommitdiffstats
path: root/sys/kern
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/kern
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/kern')
-rw-r--r--sys/kern/kern_mac.c1
-rw-r--r--sys/kern/kern_module.c2
-rw-r--r--sys/kern/kern_syscalls.c3
-rw-r--r--sys/kern/subr_bus.c5
-rw-r--r--sys/kern/vfs_init.c3
5 files changed, 12 insertions, 2 deletions
diff --git a/sys/kern/kern_mac.c b/sys/kern/kern_mac.c
index 94dfc26..db6fc59 100644
--- a/sys/kern/kern_mac.c
+++ b/sys/kern/kern_mac.c
@@ -359,6 +359,7 @@ mac_policy_modevent(module_t mod, int type, void *data)
error = 0;
break;
default:
+ error = EOPNOTSUPP;
break;
}
diff --git a/sys/kern/kern_module.c b/sys/kern/kern_module.c
index a8c704e..9dfe3ba 100644
--- a/sys/kern/kern_module.c
+++ b/sys/kern/kern_module.c
@@ -228,7 +228,7 @@ module_unload(module_t mod, int flags)
int error;
error = MOD_EVENT(mod, MOD_QUIESCE);
- if (error == EOPNOTSUPP)
+ if (error == EOPNOTSUPP || error == EINVAL)
error = 0;
if (flags == LINKER_UNLOAD_NORMAL && error != 0)
return (error);
diff --git a/sys/kern/kern_syscalls.c b/sys/kern/kern_syscalls.c
index 3f8a38b..a437fb3 100644
--- a/sys/kern/kern_syscalls.c
+++ b/sys/kern/kern_syscalls.c
@@ -115,6 +115,9 @@ syscall_module_handler(struct module *mod, int what, void *arg)
}
error = syscall_deregister(data->offset, &data->old_sysent);
return error;
+ default :
+ return EOPNOTSUPP;
+
}
if (data->chainevh)
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
index 8c8b799..ae59230 100644
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -2535,6 +2535,8 @@ root_bus_module_handler(module_t mod, int what, void* arg)
case MOD_SHUTDOWN:
device_shutdown(root_bus);
return (0);
+ default:
+ return (EOPNOTSUPP);
}
return (0);
@@ -2612,6 +2614,9 @@ driver_module_handler(module_t mod, int what, void *arg)
if (!error && dmd->dmd_chainevh)
error = dmd->dmd_chainevh(mod,what,dmd->dmd_chainarg);
break;
+ default:
+ error = EOPNOTSUPP;
+ break;
}
return (error);
diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c
index 871404c..9597519 100644
--- a/sys/kern/vfs_init.c
+++ b/sys/kern/vfs_init.c
@@ -528,7 +528,8 @@ vfs_modevent(module_t mod, int type, void *data)
if (vfc)
error = vfs_unregister(vfc);
break;
- default: /* including MOD_SHUTDOWN */
+ default:
+ error = EOPNOTSUPP;
break;
}
return (error);
OpenPOWER on IntegriCloud