From 78ebf9b055eeb1f9590d283d4a331bfb75106acd Mon Sep 17 00:00:00 2001 From: anjiahao Date: Thu, 21 Nov 2024 18:20:41 +0800 Subject: [PATCH] mempool:fix bug, Misjudged the condition of interrupt memory release We don't need to subtract the block size; we only need to determine if it's within the interrupt memory range. Signed-off-by: anjiahao --- mm/mempool/mempool.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/mempool/mempool.c b/mm/mempool/mempool.c index 5e107ad23b8..55464a724b2 100644 --- a/mm/mempool/mempool.c +++ b/mm/mempool/mempool.c @@ -428,7 +428,6 @@ retry: void mempool_release(FAR struct mempool_s *pool, FAR void *blk) { irqstate_t flags = spin_lock_irqsave(&pool->lock); - size_t blocksize = MEMPOOL_REALBLOCKSIZE(pool); #if CONFIG_MM_BACKTRACE >= 0 FAR struct mempool_backtrace_s *buf = (FAR struct mempool_backtrace_s *)((FAR char *)blk + pool->blocksize); @@ -446,10 +445,10 @@ void mempool_release(FAR struct mempool_s *pool, FAR void *blk) memset(blk, MM_FREE_MAGIC, pool->blocksize); #endif - if (pool->interruptsize > blocksize) + if (pool->ibase) { if ((FAR char *)blk >= pool->ibase && - (FAR char *)blk < pool->ibase + pool->interruptsize - blocksize) + (FAR char *)blk < pool->ibase + pool->interruptsize) { sq_addlast(blk, &pool->iqueue); }