]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add mctx attach/detach when creating/destroying a memory pool
authorAram Sargsyan <aram@isc.org>
Wed, 31 Aug 2022 12:30:38 +0000 (12:30 +0000)
committerAram Sargsyan <aram@isc.org>
Fri, 2 Sep 2022 08:16:17 +0000 (08:16 +0000)
This should make sure that the memory context is not destroyed
before the memory pool, which is using the context.

lib/isc/mem.c

index b2e53a31e18a9110be05982e65a98c373197bdb5..f828672119ef9c96ebaaaa3ea5055453fadbf1f1 100644 (file)
@@ -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 *