diff --git a/cnss_prealloc/cnss_prealloc.c b/cnss_prealloc/cnss_prealloc.c index 2993709b91..8c42721083 100644 --- a/cnss_prealloc/cnss_prealloc.c +++ b/cnss_prealloc/cnss_prealloc.c @@ -240,7 +240,7 @@ void *wcnss_prealloc_get(size_t size) if (size >= cnss_pool_alloc_threshold()) { for (i = 0; i < ARRAY_SIZE(cnss_pools); i++) { - if (cnss_pools[i].size >= size) { + if (cnss_pools[i].size >= size && cnss_pools[i].mp) { mem = mempool_alloc(cnss_pools[i].mp, gfp_mask); if (mem) { cnss_pool_put_cache_in_mem(mem, cnss_pools[i].cache); @@ -277,8 +277,7 @@ int wcnss_prealloc_put(void *mem) return 0; i = cnss_pool_get_index(mem); - - if (i >= 0 && i < ARRAY_SIZE(cnss_pools)) { + if (i >= 0 && i < ARRAY_SIZE(cnss_pools) && cnss_pools[i].mp) { mempool_free(mem, cnss_pools[i].mp); return 1; }