[Kernel] Fix sem_release twice issue in slab.
@@ -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);
