diff --git a/cnss_prealloc/cnss_prealloc.c b/cnss_prealloc/cnss_prealloc.c index 1a29d916e9..74d99f9bf1 100644 --- a/cnss_prealloc/cnss_prealloc.c +++ b/cnss_prealloc/cnss_prealloc.c @@ -195,7 +195,8 @@ void *wcnss_prealloc_get(size_t size) gfp_t gfp_mask = __GFP_ZERO; int i; - if (in_interrupt() || irqs_disabled()) + if (in_interrupt() || irqs_disabled() || + in_atomic() || rcu_preempt_depth()) gfp_mask |= GFP_ATOMIC; else gfp_mask |= GFP_KERNEL;