kernel: mem_slab: Add assert to k_mem_slab_free()
Add an assert to ensure the pointer provided by the user points to one of the available blocks in the slab. Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
This commit is contained in:
parent
8c748fd005
commit
76e4cd9dc4
1 changed files with 5 additions and 0 deletions
|
@ -149,6 +149,11 @@ void k_mem_slab_free(struct k_mem_slab *slab, void *mem)
|
||||||
{
|
{
|
||||||
k_spinlock_key_t key = k_spin_lock(&slab->lock);
|
k_spinlock_key_t key = k_spin_lock(&slab->lock);
|
||||||
|
|
||||||
|
__ASSERT(((char *)mem >= slab->buffer) &&
|
||||||
|
((((char *)mem - slab->buffer) % slab->block_size) == 0) &&
|
||||||
|
((char *)mem <= (slab->buffer + (slab->block_size * (slab->num_blocks - 1)))),
|
||||||
|
"Invalid memory pointer provided");
|
||||||
|
|
||||||
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mem_slab, free, slab);
|
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_mem_slab, free, slab);
|
||||||
if (slab->free_list == NULL && IS_ENABLED(CONFIG_MULTITHREADING)) {
|
if (slab->free_list == NULL && IS_ENABLED(CONFIG_MULTITHREADING)) {
|
||||||
struct k_thread *pending_thread = z_unpend_first_thread(&slab->wait_q);
|
struct k_thread *pending_thread = z_unpend_first_thread(&slab->wait_q);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue