From: Mark Andrews Date: Thu, 12 Dec 2019 06:43:03 +0000 (+1100) Subject: address lock order inversion X-Git-Tag: v9.15.7~4^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad12c2f3b0adefdacc3308e0193b770178153bb6;p=thirdparty%2Fbind9.git address lock order inversion --- diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 7618ff09a95..0fdd215df1d 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -168,7 +168,6 @@ nm_destroy(isc_nm_t **mgr0) { isc_refcount_destroy(&mgr->references); - LOCK(&mgr->lock); mgr->magic = 0; for (size_t i = 0; i < mgr->nworkers; i++) { @@ -181,6 +180,7 @@ nm_destroy(isc_nm_t **mgr0) { isc__nm_enqueue_ievent(&mgr->workers[i], event); } + LOCK(&mgr->lock); while (atomic_load(&mgr->workers_running) > 0) { WAIT(&mgr->wkstatecond, &mgr->lock); }