diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index f3d5f0eb615915b047a622190e8b5b33d50fcf15..5b8d0966d4291fd4e364da0c179a119cacb65ea3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -7704,8 +7704,10 @@ static void setup_per_zone_lowmem_reserve(void)
 				idx--;
 				lower_zone = pgdat->node_zones + idx;
 
-				if (!sysctl_lowmem_reserve_ratio[idx]) {
+				if (!sysctl_lowmem_reserve_ratio[idx] ||
+				    !zone_managed_pages(lower_zone)) {
 					lower_zone->lowmem_reserve[j] = 0;
+					continue;
 				} else {
 					lower_zone->lowmem_reserve[j] =
 						managed_pages / sysctl_lowmem_reserve_ratio[idx];