mirror of
https://github.com/Dasharo/zephyr.git
synced 2026-03-06 14:57:20 -08:00
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>