diff --git a/src/lib/small/mempool.c b/src/lib/small/mempool.c index 99dd415508d9218b103624ddb8fc52c6223945bb..052242470a0f627ba6f1382322c145b6ba3e182c 100644 --- a/src/lib/small/mempool.c +++ b/src/lib/small/mempool.c @@ -54,7 +54,7 @@ mslab_create(struct mslab *slab, struct mempool *pool) } /** Beginning of object data in the slab. */ -void * +static inline void * mslab_offset(struct mslab *slab) { return (char *) slab + mslab_sizeof() + diff --git a/src/lib/small/small.h b/src/lib/small/small.h index 08a30da847e0ed4c67231102be3e0c49db5a2ab0..2ae8a9029ff43366c1cc5984b06c4e41bcf24221 100644 --- a/src/lib/small/small.h +++ b/src/lib/small/small.h @@ -206,7 +206,8 @@ smfree(struct small_alloc *alloc, void *ptr) struct mslab *slab = (struct mslab *) slab_from_ptr(alloc->cache, ptr, alloc->slab_order); struct mempool *pool = slab->pool; - mempool_free(pool, ptr); + pool->slabs.stats.used -= pool->objsize; + mslab_free(pool, slab, ptr); /* * Don't keep around empty factored pools * if the allocator is out of them.