From 19a0f7e1be6efc3a9be0da333277600de1e37287 Mon Sep 17 00:00:00 2001 From: Alfred Perlstein Date: Thu, 4 Apr 2002 00:52:03 +0000 Subject: [PATCH] Avoid a lock order reversal by dropping the eventhandler_mutex earlier. We get enough protection from the lock on the individual lists that we aquire later. Noticed/Tested by: Steven G. Kargl Submitted by: Jonathan Mini --- sys/kern/subr_eventhandler.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/kern/subr_eventhandler.c b/sys/kern/subr_eventhandler.c index 5cb2500797db..0a64ff17b6d5 100644 --- a/sys/kern/subr_eventhandler.c +++ b/sys/kern/subr_eventhandler.c @@ -101,11 +101,11 @@ eventhandler_register(struct eventhandler_list *list, char *name, sx_init(&list->el_lock, name); list->el_flags = EHE_INITTED; } + mtx_unlock(&eventhandler_mutex); /* allocate an entry for this handler, populate it */ if ((eg = malloc(sizeof(struct eventhandler_entry_generic), M_EVENTHANDLER, M_NOWAIT)) == NULL) { - mtx_unlock(&eventhandler_mutex); return(NULL); } eg->func = func; @@ -125,7 +125,6 @@ eventhandler_register(struct eventhandler_list *list, char *name, if (ep == NULL) TAILQ_INSERT_TAIL(&list->el_entries, &eg->ee, ee_link); EHE_UNLOCK(list); - mtx_unlock(&eventhandler_mutex); return(&eg->ee); }