diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index f31eda080823706e19acc5211dd142adb46bf019..13cc653122b73278afaeb6054539c619b164d11a 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2401,6 +2401,14 @@ static inline void boost_watermark(struct zone *zone)
 
 	if (!watermark_boost_factor)
 		return;
+	/*
+	 * Don't bother in zones that are unlikely to produce results.
+	 * On small machines, including kdump capture kernels running
+	 * in a small area, boosting the watermark can cause an out of
+	 * memory situation immediately.
+	 */
+	if ((pageblock_nr_pages * 4) > zone_managed_pages(zone))
+		return;
 
 	max_boost = mult_frac(zone->_watermark[WMARK_HIGH],
 			watermark_boost_factor, 10000);