diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index d167c48d913cb3f15aba65d1ce0827a1a75c4b62..9992ca7f29f1e28c41cb50dba7d0bb6d43be1915 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3432,6 +3432,9 @@ alloc_flags_nofragment(struct zone *zone, gfp_t gfp_mask)
 		alloc_flags |= ALLOC_KSWAPD;
 
 #ifdef CONFIG_ZONE_DMA32
+	if (!zone)
+		return alloc_flags;
+
 	if (zone_idx(zone) != ZONE_NORMAL)
 		goto out;