git: d8b03c5904fa - main - vm_pageout: Disallow invalid values for act_scan_laundry_weight

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Fri, 18 Apr 2025 17:57:06 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=d8b03c5904faff84656d3a84a25c2b37bcbf8075

commit d8b03c5904faff84656d3a84a25c2b37bcbf8075
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-04-18 17:31:27 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-04-18 17:56:52 +0000

    vm_pageout: Disallow invalid values for act_scan_laundry_weight
    
    PR:             234167
    MFC after:      2 weeks
---
 sys/vm/vm_pageout.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 7b303d7d905f..704f1046d727 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -184,8 +184,23 @@ SYSCTL_INT(_vm, OID_AUTO, pageout_oom_seq,
     "back-to-back calls to oom detector to start OOM");
 
 static int act_scan_laundry_weight = 3;
-SYSCTL_INT(_vm, OID_AUTO, act_scan_laundry_weight, CTLFLAG_RWTUN,
-    &act_scan_laundry_weight, 0,
+
+static int
+sysctl_act_scan_laundry_weight(SYSCTL_HANDLER_ARGS)
+{
+	int error, newval;
+
+	newval = act_scan_laundry_weight;
+	error = sysctl_handle_int(oidp, &newval, 0, req);
+	if (error || req->newptr == NULL)
+		return (error);
+	if (newval < 1)
+		return (EINVAL);
+	act_scan_laundry_weight = newval;
+	return (0);
+}
+SYSCTL_PROC(_vm, OID_AUTO, act_scan_laundry_weight, CTLFLAG_RWTUN | CTLTYPE_INT,
+    &act_scan_laundry_weight, 0, sysctl_act_scan_laundry_weight, "I",
     "weight given to clean vs. dirty pages in active queue scans");
 
 static u_int vm_background_launder_rate = 4096;