diff --git a/src/knot/server/udp-handler.c b/src/knot/server/udp-handler.c
index ba3ceee24c40a3858b34a0a4f7a0a01a1f87184b..d1a4f6f14aeee6e66e8ed64748ef4c0d21cfab8b 100644
--- a/src/knot/server/udp-handler.c
+++ b/src/knot/server/udp-handler.c
@@ -249,15 +249,15 @@ static void *udp_recvmmsg_init(void)
 	knot_mm_t mm;
 	mm_ctx_mempool(&mm, sizeof(struct udp_recvmmsg));
 
-	struct udp_recvmmsg *rq = mm.alloc(mm.ctx, sizeof(struct udp_recvmmsg));
+	struct udp_recvmmsg *rq = mm_alloc(&mm, sizeof(struct udp_recvmmsg));
 	memset(rq, 0, sizeof(*rq));
 	memcpy(&rq->mm, &mm, sizeof(knot_mm_t));
 
 	/* Initialize buffers. */
 	for (unsigned i = 0; i < NBUFS; ++i) {
-		rq->iobuf[i] = mm.alloc(mm.ctx, KNOT_WIRE_MAX_PKTSIZE * RECVMMSG_BATCHLEN);
-		rq->iov[i] = mm.alloc(mm.ctx, sizeof(struct iovec) * RECVMMSG_BATCHLEN);
-		rq->msgs[i] = mm.alloc(mm.ctx, sizeof(struct mmsghdr) * RECVMMSG_BATCHLEN);
+		rq->iobuf[i] = mm_alloc(&mm, KNOT_WIRE_MAX_PKTSIZE * RECVMMSG_BATCHLEN);
+		rq->iov[i] = mm_alloc(&mm, sizeof(struct iovec) * RECVMMSG_BATCHLEN);
+		rq->msgs[i] = mm_alloc(&mm, sizeof(struct mmsghdr) * RECVMMSG_BATCHLEN);
 		memset(rq->msgs[i], 0, sizeof(struct mmsghdr) * RECVMMSG_BATCHLEN);
 		for (unsigned k = 0; k < RECVMMSG_BATCHLEN; ++k) {
 			rq->iov[i][k].iov_base = rq->iobuf[i] + k * KNOT_WIRE_MAX_PKTSIZE;
diff --git a/src/knot/zone/zonedb.c b/src/knot/zone/zonedb.c
index 0b638e684df8f418e582830c799ec0425162394d..bbb311737d0d0c7bc4a80b9d9d8f0d4a52fb2349 100644
--- a/src/knot/zone/zonedb.c
+++ b/src/knot/zone/zonedb.c
@@ -42,7 +42,7 @@ knot_zonedb_t *knot_zonedb_new(uint32_t size)
 	/* Create memory pool context. */
 	knot_mm_t mm = {0};
 	mm_ctx_mempool(&mm, MM_DEFAULT_BLKSIZE);
-	knot_zonedb_t *db = mm.alloc(mm.ctx, sizeof(knot_zonedb_t));
+	knot_zonedb_t *db = mm_alloc(&mm, sizeof(knot_zonedb_t));
 	if (db == NULL) {
 		return NULL;
 	}
@@ -50,7 +50,7 @@ knot_zonedb_t *knot_zonedb_new(uint32_t size)
 	db->maxlabels = 0;
 	db->hash = hhash_create_mm((size + 1) * 2, &mm);
 	if (db->hash == NULL) {
-		mm.free(db);
+		mm_free(&mm, db);
 		return NULL;
 	}
 
diff --git a/src/libknot/packet/pkt.c b/src/libknot/packet/pkt.c
index 664ebcc41ff347cb0fa2ce87fc064f66bdd1c064..bb8eb23f625a1b51b7a00097db8f6fcb98e4a41e 100644
--- a/src/libknot/packet/pkt.c
+++ b/src/libknot/packet/pkt.c
@@ -83,7 +83,7 @@ static int pkt_wire_alloc(knot_pkt_t *pkt, uint16_t len)
 	assert(pkt);
 	assert(len >= KNOT_WIRE_HEADER_SIZE);
 
-	pkt->wire = pkt->mm.alloc(pkt->mm.ctx, len);
+	pkt->wire = mm_alloc(&pkt->mm, len);
 	if (pkt->wire == NULL) {
 		return KNOT_ENOMEM;
 	}
@@ -392,10 +392,10 @@ void knot_pkt_free(knot_pkt_t **pkt)
 
 	// free the space for wireformat
 	if ((*pkt)->flags & KNOT_PF_FREE) {
-		(*pkt)->mm.free((*pkt)->wire);
+		mm_free(&(*pkt)->mm, (*pkt)->wire);
 	}
 
-	(*pkt)->mm.free(*pkt);
+	mm_free(&(*pkt)->mm, *pkt);
 	*pkt = NULL;
 }