zephyr/tests/kernel/queue/src
Nicolas Pitre ace11bbefd mempool: make sure max block size isn't smaller than minimum allowed
If maxsize is smaller than _MPOOL_MINBLK, then Z_MPOOL_LVLS() will be 0.
That means the loop in z_sys_mem_pool_base_init() that initializes the
block free list for the nonexistent level 0 will corrupt whatever memory
at the location the zero-sized struct sys_mem_pool_lvl array was
located. And the corruption happens to be done with a perfectly legit
memory pool block address which makes for really nasty bugs to solve.

This is more likely on 64-bit systems due to _MPOOL_MINBLK being twice
the size of 32-bit systems.

Let's prevent that with a build-time assertion on maxsize when defining
a memory pool, and adjust the affected test accordingly.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2019-07-02 19:41:20 -07:00
..
main.c tests: queue: test k_queue_alloc_*pend() 2019-06-18 09:08:01 -04:00
test_queue_contexts.c mempool: make sure max block size isn't smaller than minimum allowed 2019-07-02 19:41:20 -07:00
test_queue_fail.c
test_queue_loop.c
test_queue_user.c tests: queue: test k_queue_alloc_*pend() 2019-06-18 09:08:01 -04:00
test_queue.h tests: queue: test k_queue_alloc_*pend() 2019-06-18 09:08:01 -04:00