DragonFlyBSD Kernel Audit
DF-0163 / fix.diff
← back to finding ↓ download raw
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