From e97c3eea954e055634b72c21325d2611e960ee94 Mon Sep 17 00:00:00 2001 From: Aram Sargsyan Date: Wed, 31 Aug 2022 12:30:38 +0000 Subject: [PATCH] Add mctx attach/detach when creating/destroying a memory pool This should make sure that the memory context is not destroyed before the memory pool, which is using the context. --- lib/isc/mem.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/isc/mem.c b/lib/isc/mem.c index b2e53a31e1..f828672119 100644 --- a/lib/isc/mem.c +++ b/lib/isc/mem.c @@ -1183,8 +1183,6 @@ isc__mempool_create(isc_mem_t *restrict mctx, const size_t element_size, mpctx = isc_mem_get(mctx, sizeof(isc_mempool_t)); *mpctx = (isc_mempool_t){ - .magic = MEMPOOL_MAGIC, - .mctx = mctx, .size = size, .freemax = 1, .fillcount = 1, @@ -1197,6 +1195,9 @@ isc__mempool_create(isc_mem_t *restrict mctx, const size_t element_size, } #endif /* ISC_MEM_TRACKLINES */ + isc_mem_attach(mctx, &mpctx->mctx); + mpctx->magic = MEMPOOL_MAGIC; + *mpctxp = (isc_mempool_t *)mpctx; MCTXLOCK(mctx); @@ -1266,7 +1267,7 @@ isc__mempool_destroy(isc_mempool_t **restrict mpctxp FLARG) { mpctx->magic = 0; - isc_mem_put(mpctx->mctx, mpctx, sizeof(isc_mempool_t)); + isc_mem_putanddetach(&mpctx->mctx, mpctx, sizeof(isc_mempool_t)); } void *