diff --git a/sys/kern/kern_module.c b/sys/kern/kern_module.c --- a/sys/kern/kern_module.c +++ b/sys/kern/kern_module.c @@ -93,6 +93,11 @@ int error; module_t mod; + /* + * Serialize against concurrent module list mutations. + * Boot-time today, but defensive for future hotplug wiring. + */ + lwkt_gettoken(&mod_token); mod = module_lookupbyname(data->name); if (mod == NULL) { #if 0 @@ -114,6 +119,7 @@ kprintf("module_register_init: MOD_LOAD (%s, %lx, %p) error %d\n", data->name, (u_long)data->evhand, data->priv, error); } + lwkt_reltoken(&mod_token); } int