From: wen.yang@linux.dev
To: Joel Granados <joel.granados@kernel.org>
Cc: Wen Yang <wen.yang@linux.dev>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH 13/39] sysctl: store memory-management sysctl bounds by value
Date: Thu, 29 Oct 2026 00:34:52 +0800 [thread overview]
Message-ID: <3ecdfc9e008c95fc25b71d57d909549b19550eb6.1793204511.git.wen.yang@linux.dev> (raw)
In-Reply-To: <cover.1793204511.git.wen.yang@linux.dev>
From: Wen Yang <wen.yang@linux.dev>
Use numeric memory-management bounds, refreshing mmap limits at runtime.
Suggested-by: Joel Granados <joel.granados@kernel.org>
Signed-off-by: Wen Yang <wen.yang@linux.dev>
---
mm/compaction.c | 19 ++++++++++---------
mm/filemap.c | 4 +++-
mm/memory-failure.c | 16 ++++++++--------
mm/mmap.c | 28 +++++++++++++++++++++-------
mm/nommu.c | 4 +++-
mm/oom_kill.c | 4 ++--
mm/page-writeback.c | 25 +++++++++++++------------
mm/page_alloc.c | 28 ++++++++++++++++------------
mm/swap_state.c | 5 ++---
mm/userfaultfd.c | 4 ++--
mm/util.c | 7 ++++---
mm/vmscan.c | 8 +++++---
mm/vmstat.c | 4 ++--
13 files changed, 91 insertions(+), 65 deletions(-)
diff --git a/mm/compaction.c b/mm/compaction.c
index f1b2060eb201..6c3a3d08e42a 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -3296,8 +3296,9 @@ void __meminit kcompactd_stop(int nid)
}
}
-static int proc_dointvec_minmax_warn_RT_change(const struct ctl_table *table,
- int write, void *buffer, size_t *lenp, loff_t *ppos)
+static int proc_dointvec_range_warn_RT_change(const struct ctl_table *table,
+ int write, void *buffer,
+ size_t *lenp, loff_t *ppos)
{
int ret, old;
@@ -3329,8 +3330,8 @@ static const struct ctl_table vm_compaction[] = {
.maxlen = sizeof(sysctl_compaction_proactiveness),
.mode = 0644,
.proc_handler = compaction_proactiveness_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_HUNDRED,
+ .min = 0,
+ .max = 100,
},
{
.procname = "extfrag_threshold",
@@ -3338,17 +3339,17 @@ static const struct ctl_table vm_compaction[] = {
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_THOUSAND,
+ .min = 0,
+ .max = 1000,
},
{
.procname = "compact_unevictable_allowed",
.data = &sysctl_compact_unevictable_allowed,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = proc_dointvec_minmax_warn_RT_change,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .proc_handler = proc_dointvec_range_warn_RT_change,
+ .min = 0,
+ .max = 1,
},
};
diff --git a/mm/filemap.c b/mm/filemap.c
index b74bc1e5015c..b465bfee3782 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -11,6 +11,7 @@
* the NFS filesystem used to do this differently, for example)
*/
#include <linux/export.h>
+#include <linux/limits.h>
#include <linux/compiler.h>
#include <linux/dax.h>
#include <linux/fs.h>
@@ -1086,7 +1087,8 @@ static const struct ctl_table filemap_sysctl_table[] = {
.maxlen = sizeof(sysctl_page_lock_unfairness),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
}
};
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index b705f9f97f42..5c5c7ec329b7 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -178,8 +178,8 @@ static const struct ctl_table memory_failure_table[] = {
.maxlen = sizeof(sysctl_memory_failure_early_kill),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
{
.procname = "memory_failure_recovery",
@@ -187,8 +187,8 @@ static const struct ctl_table memory_failure_table[] = {
.maxlen = sizeof(sysctl_memory_failure_recovery),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
{
.procname = "enable_soft_offline",
@@ -196,8 +196,8 @@ static const struct ctl_table memory_failure_table[] = {
.maxlen = sizeof(sysctl_enable_soft_offline),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
{
.procname = "panic_on_unrecoverable_memory_failure",
@@ -205,8 +205,8 @@ static const struct ctl_table memory_failure_table[] = {
.maxlen = sizeof(sysctl_panic_on_unrecoverable_mf),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
}
};
diff --git a/mm/mmap.c b/mm/mmap.c
index 148ba01c0373..bc1ad6431bf9 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -10,6 +10,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
+#include <linux/limits.h>
#include <linux/slab.h>
#include <linux/backing-dev.h>
#include <linux/mm.h>
@@ -1493,6 +1494,17 @@ struct vm_area_struct *_install_special_mapping(
int sysctl_legacy_va_layout;
#endif
+#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
+static int mmap_rnd_bits_handler(const struct ctl_table *table, int write,
+ void *buffer, size_t *lenp, loff_t *ppos)
+{
+ struct ctl_table tmp = *table;
+
+ tmp.max = mmap_rnd_bits_max;
+ return proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);
+}
+#endif
+
static const struct ctl_table mmap_table[] = {
{
.procname = "max_map_count",
@@ -1500,7 +1512,8 @@ static const struct ctl_table mmap_table[] = {
.maxlen = sizeof(sysctl_max_map_count),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
@@ -1510,7 +1523,8 @@ static const struct ctl_table mmap_table[] = {
.maxlen = sizeof(sysctl_legacy_va_layout),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
#endif
#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
@@ -1519,9 +1533,9 @@ static const struct ctl_table mmap_table[] = {
.data = &mmap_rnd_bits,
.maxlen = sizeof(mmap_rnd_bits),
.mode = 0600,
- .proc_handler = proc_dointvec_minmax,
- .extra1 = (void *)&mmap_rnd_bits_min,
- .extra2 = (void *)&mmap_rnd_bits_max,
+ .proc_handler = mmap_rnd_bits_handler,
+ .min = CONFIG_ARCH_MMAP_RND_BITS_MIN,
+ .max = CONFIG_ARCH_MMAP_RND_BITS_MAX,
},
#endif
#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
@@ -1531,8 +1545,8 @@ static const struct ctl_table mmap_table[] = {
.maxlen = sizeof(mmap_rnd_compat_bits),
.mode = 0600,
.proc_handler = proc_dointvec_minmax,
- .extra1 = (void *)&mmap_rnd_compat_bits_min,
- .extra2 = (void *)&mmap_rnd_compat_bits_max,
+ .min = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN,
+ .max = CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX,
},
#endif
};
diff --git a/mm/nommu.c b/mm/nommu.c
index bc87946e5cc2..3c1a7a9765a5 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -17,6 +17,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/export.h>
+#include <linux/limits.h>
#include <linux/mm.h>
#include <linux/sched/mm.h>
#include <linux/mman.h>
@@ -411,7 +412,8 @@ static const struct ctl_table nommu_table[] = {
.maxlen = sizeof(sysctl_nr_trim_pages),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
};
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 5d48bd862c27..6bb4e5a1b419 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -696,8 +696,8 @@ static const struct ctl_table vm_oom_kill_table[] = {
.maxlen = sizeof(sysctl_panic_on_oom),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_TWO,
+ .min = 0,
+ .max = 2,
},
{
.procname = "oom_kill_allocating_task",
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 0694ec4098f6..40fdc2d698d9 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -13,6 +13,7 @@
*/
#include <linux/kernel.h>
+#include <linux/limits.h>
#include <linux/math64.h>
#include <linux/export.h>
#include <linux/spinlock.h>
@@ -2227,9 +2228,6 @@ static int laptop_mode_handler(const struct ctl_table *table, int write,
return ret;
}
-/* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
-static const unsigned long dirty_bytes_min = 2 * PAGE_SIZE;
-
static const struct ctl_table vm_page_writeback_sysctls[] = {
{
.procname = "dirty_background_ratio",
@@ -2237,8 +2235,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(dirty_background_ratio),
.mode = 0644,
.proc_handler = dirty_background_ratio_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_HUNDRED,
+ .min = 0,
+ .max = 100,
},
{
.procname = "dirty_background_bytes",
@@ -2246,7 +2244,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(dirty_background_bytes),
.mode = 0644,
.proc_handler = dirty_background_bytes_handler,
- .extra1 = SYSCTL_LONG_ONE,
+ .min = 1,
+ .max = ULONG_MAX,
},
{
.procname = "dirty_ratio",
@@ -2254,8 +2253,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(vm_dirty_ratio),
.mode = 0644,
.proc_handler = dirty_ratio_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_HUNDRED,
+ .min = 0,
+ .max = 100,
},
{
.procname = "dirty_bytes",
@@ -2263,7 +2262,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(vm_dirty_bytes),
.mode = 0644,
.proc_handler = dirty_bytes_handler,
- .extra1 = (void *)&dirty_bytes_min,
+ .min = 2 * PAGE_SIZE,
+ .max = ULONG_MAX,
},
{
.procname = "dirty_writeback_centisecs",
@@ -2278,7 +2278,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(dirty_expire_interval),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
#ifdef CONFIG_HIGHMEM
{
@@ -2287,8 +2288,8 @@ static const struct ctl_table vm_page_writeback_sysctls[] = {
.maxlen = sizeof(vm_highmem_is_dirtyable),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
#endif
{
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 2b2855300217..956acbe7e5bd 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -6933,7 +6933,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(min_free_kbytes),
.mode = 0644,
.proc_handler = min_free_kbytes_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
{
.procname = "watermark_boost_factor",
@@ -6941,7 +6942,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(watermark_boost_factor),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
{
.procname = "watermark_scale_factor",
@@ -6949,8 +6951,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(watermark_scale_factor),
.mode = 0644,
.proc_handler = watermark_scale_factor_sysctl_handler,
- .extra1 = SYSCTL_ONE,
- .extra2 = SYSCTL_THREE_THOUSAND,
+ .min = 1,
+ .max = 3000,
},
{
.procname = "defrag_mode",
@@ -6958,8 +6960,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(defrag_mode),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
{
.procname = "percpu_pagelist_high_fraction",
@@ -6967,7 +6969,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(percpu_pagelist_high_fraction),
.mode = 0644,
.proc_handler = percpu_pagelist_high_fraction_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
{
.procname = "lowmem_reserve_ratio",
@@ -6975,7 +6978,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(sysctl_lowmem_reserve_ratio),
.mode = 0644,
.proc_handler = lowmem_reserve_ratio_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
},
#ifdef CONFIG_NUMA
{
@@ -6991,8 +6995,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(sysctl_min_unmapped_ratio),
.mode = 0644,
.proc_handler = sysctl_min_unmapped_ratio_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_HUNDRED,
+ .min = 0,
+ .max = 100,
},
{
.procname = "min_slab_ratio",
@@ -7000,8 +7004,8 @@ static const struct ctl_table page_alloc_sysctl_table[] = {
.maxlen = sizeof(sysctl_min_slab_ratio),
.mode = 0644,
.proc_handler = sysctl_min_slab_ratio_sysctl_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE_HUNDRED,
+ .min = 0,
+ .max = 100,
},
#endif
};
diff --git a/mm/swap_state.c b/mm/swap_state.c
index d9e36c505398..1097ba48b8b1 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -30,7 +30,6 @@
/* Swap readahead cluster size, as a power of 2 pages. */
static int page_cluster;
-static const int page_cluster_max = 31;
/*
* swapper_space is a fiction, retained to simplify the path through
@@ -1071,8 +1070,8 @@ static const struct ctl_table swap_readahead_sysctl_table[] = {
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = (void *)&page_cluster_max,
+ .min = 0,
+ .max = 31,
}
};
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
index 3b71712edab4..f631a4e27aae 100644
--- a/mm/userfaultfd.c
+++ b/mm/userfaultfd.c
@@ -2405,8 +2405,8 @@ static const struct ctl_table vm_userfaultfd_table[] = {
.maxlen = sizeof(sysctl_unprivileged_userfaultfd),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
};
#endif
diff --git a/mm/util.c b/mm/util.c
index 2f2bc521868a..1460f47c10c5 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -1,6 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
#include <linux/mm.h>
-#include <linux/limits.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/compiler.h>
@@ -858,8 +857,8 @@ static const struct ctl_table util_sysctl_table[] = {
.maxlen = sizeof(sysctl_overcommit_memory),
.mode = 0644,
.proc_handler = overcommit_policy_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_TWO,
+ .min = 0,
+ .max = 2,
},
{
.procname = "overcommit_ratio",
@@ -874,6 +873,8 @@ static const struct ctl_table util_sysctl_table[] = {
.maxlen = sizeof(sysctl_overcommit_kbytes),
.mode = 0644,
.proc_handler = overcommit_kbytes_handler,
+ .min = 0,
+ .max = ULONG_MAX,
},
{
.procname = "user_reserve_kbytes",
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 9959ca158ce8..48b7b373a76c 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -13,6 +13,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/mm.h>
+#include <linux/limits.h>
#include <linux/sched/mm.h>
#include <linux/module.h>
#include <linux/gfp.h>
@@ -7884,8 +7885,8 @@ static const struct ctl_table vmscan_sysctl_table[] = {
.maxlen = sizeof(vm_swappiness),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_TWO_HUNDRED,
+ .min = 0,
+ .max = 200,
},
#ifdef CONFIG_NUMA
{
@@ -7894,7 +7895,8 @@ static const struct ctl_table vmscan_sysctl_table[] = {
.maxlen = sizeof(node_reclaim_mode),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = SYSCTL_ZERO,
+ .min = 0,
+ .max = INT_MAX,
}
#endif
};
diff --git a/mm/vmstat.c b/mm/vmstat.c
index a3e809c57f29..4d0a44624d16 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -2279,8 +2279,8 @@ static const struct ctl_table vmstat_table[] = {
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = sysctl_vm_numa_stat_handler,
- .extra1 = SYSCTL_ZERO,
- .extra2 = SYSCTL_ONE,
+ .min = 0,
+ .max = 1,
},
#endif
};
--
2.25.1
next prev parent reply other threads:[~2026-10-28 16:36 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 16:34 [RFC PATCH 00/39] sysctl: replace overloaded extra pointers with typed bounds and context wen.yang
2026-10-28 16:34 ` [RFC PATCH 01/39] " wen.yang
2026-10-28 21:09 ` David Laight
2026-10-28 16:34 ` [RFC PATCH 02/39] test_sysctl: convert bounds to numeric values wen.yang
2026-10-28 16:34 ` [RFC PATCH 03/39] sysctl: add KUnit coverage for numeric bounds and handlers wen.yang
2026-10-28 16:34 ` [RFC PATCH 04/39] sysctl: cover runtime ranges and context lifecycles in KUnit wen.yang
2026-10-28 16:34 ` [RFC PATCH 05/39] sysctl: cover priv in KUnit and the debug test module wen.yang
2026-10-28 16:34 ` [RFC PATCH 06/39] sysctl: convert core table bounds to numeric values wen.yang
2026-10-28 16:34 ` [RFC PATCH 07/39] sysctl: store architecture sysctl bounds by value wen.yang
2026-10-28 16:34 ` [RFC PATCH 08/39] sysctl: store crypto " wen.yang
2026-10-28 16:34 ` [RFC PATCH 09/39] sysctl: store device " wen.yang
2026-10-28 16:34 ` [RFC PATCH 10/39] sysctl: store filesystem " wen.yang
2026-10-28 16:34 ` [RFC PATCH 11/39] sysctl: store message-queue " wen.yang
2026-10-28 16:34 ` [RFC PATCH 12/39] sysctl: store kernel " wen.yang
2026-10-28 16:34 ` wen.yang [this message]
2026-10-28 16:34 ` [RFC PATCH 14/39] sysctl: store IPv6 scalar " wen.yang
2026-10-28 16:34 ` [RFC PATCH 15/39] sysctl: store netfilter " wen.yang
2026-10-28 16:34 ` [RFC PATCH 16/39] sysctl: store RPC " wen.yang
2026-10-28 16:34 ` [RFC PATCH 17/39] sysctl: store remaining network " wen.yang
2026-10-28 16:34 ` [RFC PATCH 18/39] sysctl: store security " wen.yang
2026-10-28 16:34 ` [RFC PATCH 19/39] io_uring: store its " wen.yang
2026-10-28 16:34 ` [RFC PATCH 20/39] sysctl: refresh dynamic scheduler and PID bounds per call wen.yang
2026-10-28 16:35 ` [RFC PATCH 21/39] sysctl: refresh device-dependent " wen.yang
2026-10-28 16:35 ` [RFC PATCH 22/39] sysctl: refresh namespace IPC " wen.yang
2026-10-28 16:35 ` [RFC PATCH 23/39] yama: preserve scope locking with numeric sysctl bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 24/39] net: refresh core sysctl limits without bound pointers wen.yang
2026-10-28 16:35 ` [RFC PATCH 25/39] sctp: resolve numeric ranges from the current namespace wen.yang
2026-10-28 16:35 ` [RFC PATCH 26/39] rds: preserve live reconnect limits with numeric bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 27/39] ipv4: preserve live and vector bounds with numeric sysctls wen.yang
2026-10-28 16:35 ` [RFC PATCH 28/39] net: refresh fragment and remaining dynamic sysctl bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 29/39] neighbour: derive sysctl ownership independently of bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 30/39] net: resolve sysctl owners from their backing data wen.yang
2026-10-28 16:35 ` [RFC PATCH 31/39] ipvs: derive sysctl ownership from numeric storage wen.yang
2026-10-28 16:35 ` [RFC PATCH 32/39] sysctl: remove obsolete nr_open bound variables wen.yang
2026-10-28 16:35 ` [RFC PATCH 33/39] ipv6: move address sysctl context to priv wen.yang
2026-10-28 16:35 ` [RFC PATCH 34/39] ipv4: move device " wen.yang
2026-10-28 16:35 ` [RFC PATCH 35/39] netfilter: move logger " wen.yang
2026-10-28 16:35 ` [RFC PATCH 36/39] parport: move device " wen.yang
2026-10-28 16:35 ` [RFC PATCH 37/39] net: move namespace " wen.yang
2026-10-28 16:35 ` [RFC PATCH 38/39] arm64: move vector-length " wen.yang
2026-10-28 16:35 ` [RFC PATCH 39/39] sysctl: remove the extra pointers and the compatibility bounds read wen.yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3ecdfc9e008c95fc25b71d57d909549b19550eb6.1793204511.git.wen.yang@linux.dev \
--to=wen.yang@linux.dev \
--cc=joel.granados@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®