提交 c7330863 编写于 作者: B bernard

[Kernel] Fix sem_release twice issue in slab.

上级 d615bebb
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册