[RFC PATCH 07/39] sysctl: store architecture sysctl bounds by value
From: wen . yang
Date: Wed Oct 28 2026 - 12:36:34 EST
From: Wen Yang <wen.yang@xxxxxxxxx>
Replace architecture bound pointers with numeric limits.
Suggested-by: Joel Granados <joel.granados@xxxxxxxxxx>
Signed-off-by: Wen Yang <wen.yang@xxxxxxxxx>
---
arch/arm64/kernel/armv8_deprecated.c | 4 ++--
arch/arm64/kernel/process.c | 4 ++--
arch/riscv/kernel/process.c | 4 ++--
arch/s390/appldata/appldata_base.c | 12 +++++++-----
arch/s390/kernel/hiperdispatch.c | 4 ++--
arch/s390/kernel/topology.c | 8 ++++----
arch/sh/kernel/vsyscall/vsyscall.c | 4 ++--
arch/x86/entry/vdso/vdso32-setup.c | 4 ++--
arch/x86/kernel/cpu/bus_lock.c | 4 ++--
9 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
index b7a1f8b788bb..1c143e3a8d09 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
@@ -566,8 +566,8 @@ static void __init register_insn_emulation(struct insn_emulation *insn)
sysctl->procname = insn->name;
sysctl->data = &insn->current_mode;
- sysctl->extra1 = &insn->min;
- sysctl->extra2 = &insn->max;
+ sysctl->min = insn->min;
+ sysctl->max = insn->max;
sysctl->proc_handler = emulation_proc_handler;
register_sysctl_sz("abi", sysctl, 1);
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 581f80e9b9b7..9db8f8bedc06 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -944,8 +944,8 @@ static const struct ctl_table tagged_addr_sysctl_table[] = {
.data = &tagged_addr_disabled,
.maxlen = sizeof(int),
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
index 34c1d498d1ca..6a1408dbf423 100644
--- a/arch/riscv/kernel/process.c
+++ b/arch/riscv/kernel/process.c
@@ -429,8 +429,8 @@ static const struct ctl_table tagged_addr_sysctl_table[] = {
.data = &tagged_addr_disabled,
.maxlen = sizeof(int),
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c
index f10b2f040cc2..012f9eae8e62 100644
--- a/arch/s390/appldata/appldata_base.c
+++ b/arch/s390/appldata/appldata_base.c
@@ -12,6 +12,7 @@
#define pr_fmt(fmt) "appldata: " fmt
#include <linux/export.h>
+#include <linux/limits.h>
#include <linux/module.h>
#include <linux/sched/stat.h>
#include <linux/init.h>
@@ -250,9 +251,9 @@ appldata_timer_handler(const struct ctl_table *ctl, int write,
struct ctl_table ctl_entry = {
.procname = ctl->procname,
.data = &timer_active,
+ .min = 0,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .max = 1,
};
rc = proc_douintvec_minmax(&ctl_entry, write, buffer, lenp, ppos);
@@ -281,8 +282,9 @@ appldata_interval_handler(const struct ctl_table *ctl, int write,
struct ctl_table ctl_entry = {
.procname = ctl->procname,
.data = &interval,
+ .min = 1,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ONE,
+ .max = INT_MAX,
};
rc = proc_dointvec_minmax(&ctl_entry, write, buffer, lenp, ppos);
@@ -312,9 +314,9 @@ appldata_generic_handler(const struct ctl_table *ctl, int write,
int active;
struct ctl_table ctl_entry = {
.data = &active,
+ .min = 0,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .max = 1,
};
found = 0;
diff --git a/arch/s390/kernel/hiperdispatch.c b/arch/s390/kernel/hiperdispatch.c
index 1397dab8a677..4455b081c652 100644
--- a/arch/s390/kernel/hiperdispatch.c
+++ b/arch/s390/kernel/hiperdispatch.c
@@ -272,9 +272,9 @@ static int hiperdispatch_ctl_handler(const struct ctl_table *ctl, int write,
struct ctl_table ctl_entry = {
.procname = ctl->procname,
.data = &hiperdispatch,
+ .min = 0,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .max = 1,
};
hiperdispatch = hd_enabled;
diff --git a/arch/s390/kernel/topology.c b/arch/s390/kernel/topology.c
index 42fc0294f543..8ca541e2f50a 100644
--- a/arch/s390/kernel/topology.c
+++ b/arch/s390/kernel/topology.c
@@ -624,9 +624,9 @@ static int topology_ctl_handler(const struct ctl_table *ctl, int write,
struct ctl_table ctl_entry = {
.procname = ctl->procname,
.data = &enabled,
+ .min = 0,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .max = 1,
};
rc = proc_douintvec_minmax(&ctl_entry, write, buffer, lenp, ppos);
@@ -653,9 +653,9 @@ static int polarization_ctl_handler(const struct ctl_table *ctl, int write,
struct ctl_table ctl_entry = {
.procname = ctl->procname,
.data = &polarization,
+ .min = 0,
.maxlen = sizeof(int),
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .max = 1,
};
polarization = cpu_management;
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index 1563dcc55fd3..fb4f465f380b 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -38,8 +38,8 @@ static const struct ctl_table vdso_table[] = {
.maxlen = sizeof(vdso_enabled),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
diff --git a/arch/x86/entry/vdso/vdso32-setup.c b/arch/x86/entry/vdso/vdso32-setup.c
index 8894013eea1d..53e2e2cd267c 100644
--- a/arch/x86/entry/vdso/vdso32-setup.c
+++ b/arch/x86/entry/vdso/vdso32-setup.c
@@ -66,8 +66,8 @@ static const struct ctl_table vdso_table[] = {
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
diff --git a/arch/x86/kernel/cpu/bus_lock.c b/arch/x86/kernel/cpu/bus_lock.c
index 177f964d4d36..a9a8177ffccf 100644
--- a/arch/x86/kernel/cpu/bus_lock.c
+++ b/arch/x86/kernel/cpu/bus_lock.c
@@ -58,8 +58,8 @@ static const struct ctl_table sld_sysctls[] = {
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_douintvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
--
2.25.1