DragonFlyBSD Kernel Audit
DF-0246 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/sys/eventhandler.h b/sys/sys/eventhandler.h
--- a/sys/sys/eventhandler.h
+++ b/sys/sys/eventhandler.h
@@ -116,13 +116,15 @@
     struct eventhandler_list *_el;					\
     struct eventhandler_entry *_ep;					\
 									\
+    lwkt_gettoken(&evlist_token);					\
     if ((_el = eventhandler_find_list(#name)) != NULL) {		\
-	for (_ep = TAILQ_FIRST(&(_el->el_entries));			\
-	     _ep != NULL;						\
+	for (_ep = TAILQ_FIRST(&(_el->el_entries));				\
+	     _ep != NULL;							\
 	     _ep = TAILQ_NEXT(_ep, ee_link)) {				\
 	    ((struct eventhandler_entry_ ## name *)_ep)->eh_func(_ep->ee_arg , ## args); \
-	}								\
+	}									\
     }									\
+    lwkt_reltoken(&evlist_token);					\
 } while (0)
 
 #define EVENTHANDLER_REGISTER(name, func, arg, priority) \