From: Arran Cudbard-Bell Date: Mon, 18 Apr 2022 23:06:03 +0000 (-0500) Subject: Do module mutex init later once we've loaded the library X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f02fb5c1d8b32fc30380913413afcc4ae70c15e0;p=thirdparty%2Ffreeradius-server.git Do module mutex init later once we've loaded the library --- diff --git a/src/lib/server/module.c b/src/lib/server/module.c index 5347d0c17b2..5482dacec6b 100644 --- a/src/lib/server/module.c +++ b/src/lib/server/module.c @@ -996,6 +996,16 @@ module_instance_t *module_alloc(module_list_t *ml, } MEM(mi = talloc_zero(parent ? (void const *)parent : (void const *)ml, module_instance_t)); + if (dl_module_instance(mi, &mi->dl_inst, parent ? parent->dl_inst : NULL, + type, mod_name, qual_inst_name) < 0) { + error: + mi->name = qual_inst_name; /* Assigned purely for debug log output when mi is freed */ + talloc_free(mi); + talloc_free(qual_inst_name); + return NULL; + } + fr_assert(mi->dl_inst); + /* * If we're threaded, check if the module is thread-safe. * @@ -1007,16 +1017,6 @@ module_instance_t *module_alloc(module_list_t *ml, if ((mi->module->type & MODULE_TYPE_THREAD_UNSAFE) != 0) pthread_mutex_init(&mi->mutex, NULL); talloc_set_destructor(mi, _module_instance_free); - if (dl_module_instance(mi, &mi->dl_inst, parent ? parent->dl_inst : NULL, - type, mod_name, qual_inst_name) < 0) { - error: - mi->name = qual_inst_name; /* Assigned purely for debug log output when mi is freed */ - talloc_free(mi); - talloc_free(qual_inst_name); - return NULL; - } - fr_assert(mi->dl_inst); - mi->name = talloc_typed_strdup(mi, qual_inst_name); talloc_free(qual_inst_name); /* Avoid stealing */