[PATCH] malloc: Hoist common unlock out of if-else control block

Dev Jain dev.jain@arm.com
Mon Sep 15 11:43:29 GMT 2025


We currently unlock the arena mutex in arena_get_retry() unconditionally.
Therefore, hoist out the unlock from the if-else control block.

Signed-off-by: Dev Jain <dev.jain@arm.com>
---
 malloc/arena.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/malloc/arena.c b/malloc/arena.c
index 4cc9881d82..4cd79d7244 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -861,15 +861,14 @@ static mstate
 arena_get_retry (mstate ar_ptr, size_t bytes)
 {
   LIBC_PROBE (memory_arena_retry, 2, bytes, ar_ptr);
+  __libc_lock_unlock (ar_ptr->mutex);
   if (ar_ptr != &main_arena)
     {
-      __libc_lock_unlock (ar_ptr->mutex);
       ar_ptr = &main_arena;
       __libc_lock_lock (ar_ptr->mutex);
     }
   else
     {
-      __libc_lock_unlock (ar_ptr->mutex);
       ar_ptr = arena_get2 (bytes, ar_ptr);
     }
 
-- 
2.34.1



More information about the Libc-alpha mailing list