diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6185ae68ce4ed1484cb4e7ce648fad36f600c4ba..97eb298a0f573b8df707f2c160114c5d52a1b11c 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4017,7 +4017,9 @@ void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...) va_list args; static DEFINE_RATELIMIT_STATE(nopage_rs, 10*HZ, 1); - if ((gfp_mask & __GFP_NOWARN) || !__ratelimit(&nopage_rs)) + if ((gfp_mask & __GFP_NOWARN) || + !__ratelimit(&nopage_rs) || + ((gfp_mask & __GFP_DMA) && !has_managed_dma())) return; va_start(args, fmt);