From c7330863545342bf9ddcee67d221957688129558 Mon Sep 17 00:00:00 2001 From: bernard Date: Tue, 31 Oct 2017 11:38:28 +0800 Subject: [PATCH] [Kernel] Fix sem_release twice issue in slab. --- src/slab.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/slab.c b/src/slab.c index 14a2c784b5..5e6a204896 100644 --- a/src/slab.c +++ b/src/slab.c @@ -616,7 +616,10 @@ void *rt_malloc(rt_size_t size) /* allocate a zone from page */ z = rt_page_alloc(zone_size / RT_MM_PAGE_SIZE); if (z == RT_NULL) - goto fail; + { + chunk = RT_NULL; + goto __exit; + } /* lock heap */ rt_sem_take(&heap_sem, RT_WAITING_FOREVER); @@ -672,15 +675,10 @@ void *rt_malloc(rt_size_t size) done: rt_sem_release(&heap_sem); - RT_OBJECT_HOOK_CALL(rt_malloc_hook, ((char *)chunk, size)); +__exit: return chunk; - -fail: - rt_sem_release(&heap_sem); - - return RT_NULL; } RTM_EXPORT(rt_malloc); -- GitLab