You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by je...@apache.org on 2023/01/18 08:02:40 UTC

[nuttx] 01/03: mempool:fix a bug when use smp on mempool backtrace

This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 288725a5f8b50fa8f8c32fb963dafca0467a1913
Author: anjiahao <an...@xiaomi.com>
AuthorDate: Thu Dec 1 00:35:25 2022 +0800

    mempool:fix a bug when use smp on mempool backtrace
    
    Signed-off-by: anjiahao <an...@xiaomi.com>
---
 mm/mempool/mempool.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/mm/mempool/mempool.c b/mm/mempool/mempool.c
index d1ee35caf2..10186c2aa9 100644
--- a/mm/mempool/mempool.c
+++ b/mm/mempool/mempool.c
@@ -317,7 +317,7 @@ out_with_lock:
 
 void mempool_free(FAR struct mempool_s *pool, FAR void *blk)
 {
-  irqstate_t flags;
+  irqstate_t flags = spin_lock_irqsave(&pool->lock);
 #if CONFIG_MM_BACKTRACE >= 0
   size_t blocksize =  ALIGN_UP(pool->blocksize +
                                sizeof(struct mempool_backtrace_s),
@@ -332,8 +332,6 @@ void mempool_free(FAR struct mempool_s *pool, FAR void *blk)
   pool->nalloc--;
 #endif
 
-  flags = spin_lock_irqsave(&pool->lock);
-
   if (pool->interruptsize > blocksize)
     {
       if ((FAR char *)blk >= pool->ibase &&