diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index f18f016cca8064c6f6d91ad4c2d7d716cd28f94c..a818d568ddf3a54c2e1a7250b671c5c0f77952f4 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5754,7 +5754,12 @@ module_init(init_per_zone_wmark_min)
 int min_free_kbytes_sysctl_handler(ctl_table *table, int write,
 	void __user *buffer, size_t *length, loff_t *ppos)
 {
-	proc_dointvec(table, write, buffer, length, ppos);
+	int rc;
+
+	rc = proc_dointvec_minmax(table, write, buffer, length, ppos);
+	if (rc)
+		return rc;
+
 	if (write) {
 		user_min_free_kbytes = min_free_kbytes;
 		setup_per_zone_wmarks();