mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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


  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®