linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files
@ 2024-09-03  3:29 ` Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 01/15] mm: vmstat: move sysctls to " Kaixiong Yu
                     ` (15 more replies)
  0 siblings, 16 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:29 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This patch series moves sysctls of vm_table in kernel/sysctl.c to
places where they actually belong, and do some related code clean-ups.
After this patch series, all sysctls in vm_table have been moved into its
own files, meanwhile, delete vm_table.

All the modifications of this patch series base on
linux-next(tags/next-20240902). To test this patch series, the code was
compiled with both the CONFIG_SYSCTL enabled and disabled on arm64 and
x86_64 architectures. After this patch series is applied, all files
under /proc/sys/vm can be read or written normally.

Changes in v2:
 - fix sysctl_max_map_count undeclared issue in mm/nommu.c for patch6
 - update changelog for patch7/12, suggested by Kees/Paul
 - fix patch8, sorry for wrong changes and forget to built with NOMMU
 - add reviewed-by from Kees except patch8 since patch8 is wrong in v1
 - add reviewed-by from Jan Kara, Christian Brauner in patch12

Kaixiong Yu (15):
  mm: vmstat: move sysctls to its own files
  mm: filemap: move sysctl to its own file
  mm: swap: move sysctl to its own file
  mm: vmscan: move vmscan sysctls to its own file
  mm: util: move sysctls into it own files
  mm: mmap: move sysctl into its own file
  security: min_addr: move sysctl into its own file
  mm: nommu: move sysctl to its own file
  fs: fs-writeback: move sysctl to its own file
  fs: drop_caches: move sysctl to its own file
  sunrpc: use vfs_pressure_ratio() helper
  fs: dcache: move the sysctl into its own file
  x86: vdso: move the sysctl into its own file
  sh: vdso: move the sysctl into its own file
  sysctl: remove unneeded include

 arch/sh/kernel/vsyscall/vsyscall.c |  14 ++
 arch/x86/entry/vdso/vdso32-setup.c |  16 ++-
 fs/dcache.c                        |  21 ++-
 fs/drop_caches.c                   |  23 ++-
 fs/fs-writeback.c                  |  28 ++--
 include/linux/dcache.h             |   7 +-
 include/linux/mm.h                 |  23 ---
 include/linux/mman.h               |   2 -
 include/linux/swap.h               |   9 --
 include/linux/vmstat.h             |  11 --
 include/linux/writeback.h          |   4 -
 kernel/sysctl.c                    | 221 -----------------------------
 mm/filemap.c                       |  18 ++-
 mm/internal.h                      |  10 ++
 mm/mmap.c                          |  54 +++++++
 mm/nommu.c                         |  15 +-
 mm/swap.c                          |  16 ++-
 mm/swap.h                          |   1 +
 mm/util.c                          |  67 +++++++--
 mm/vmscan.c                        |  23 +++
 mm/vmstat.c                        |  42 +++++-
 net/sunrpc/auth.c                  |   2 +-
 security/min_addr.c                |  11 ++
 23 files changed, 328 insertions(+), 310 deletions(-)

-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 01/15] mm: vmstat: move sysctls to its own files
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
@ 2024-09-03  3:29   ` Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 02/15] mm: filemap: move sysctl to its own file Kaixiong Yu
                     ` (14 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:29 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This moves all vmstat related sysctls to its own file, removes useless
extern variable declarations, and do some related clean-ups. To avoid
compiler warnings when CONFIG_PROC_FS is not defined, add the macro
definition CONFIG_PROC_FS ahead CONFIG_NUMA in vmstat.c.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 include/linux/vmstat.h | 11 -----------
 kernel/sysctl.c        | 28 ----------------------------
 mm/vmstat.c            | 42 +++++++++++++++++++++++++++++++++++++++---
 3 files changed, 39 insertions(+), 42 deletions(-)

diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index d2761bf8ff32..b2ccb6845595 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -10,15 +10,8 @@
 #include <linux/static_key.h>
 #include <linux/mmdebug.h>
 
-extern int sysctl_stat_interval;
-
 #ifdef CONFIG_NUMA
-#define ENABLE_NUMA_STAT   1
-#define DISABLE_NUMA_STAT   0
-extern int sysctl_vm_numa_stat;
 DECLARE_STATIC_KEY_TRUE(vm_numa_stat_key);
-int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
-		void *buffer, size_t *length, loff_t *ppos);
 #endif
 
 struct reclaim_stat {
@@ -304,10 +297,6 @@ void quiet_vmstat(void);
 void cpu_vm_stats_fold(int cpu);
 void refresh_zone_stat_thresholds(void);
 
-struct ctl_table;
-int vmstat_refresh(const struct ctl_table *, int write, void *buffer, size_t *lenp,
-		loff_t *ppos);
-
 void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *);
 
 int calculate_pressure_threshold(struct zone *zone);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 79e6cb1d5c48..726b866af57b 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -49,7 +49,6 @@
 #include <linux/limits.h>
 #include <linux/dcache.h>
 #include <linux/syscalls.h>
-#include <linux/vmstat.h>
 #include <linux/nfs_fs.h>
 #include <linux/acpi.h>
 #include <linux/reboot.h>
@@ -2081,17 +2080,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ZERO,
 		.extra2		= SYSCTL_TWO_HUNDRED,
 	},
-#ifdef CONFIG_NUMA
-	{
-		.procname	= "numa_stat",
-		.data		= &sysctl_vm_numa_stat,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= sysctl_vm_numa_stat_handler,
-		.extra1		= SYSCTL_ZERO,
-		.extra2		= SYSCTL_ONE,
-	},
-#endif
 	{
 		.procname	= "drop_caches",
 		.data		= &sysctl_drop_caches,
@@ -2157,22 +2145,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ZERO,
 	},
 #endif
-#ifdef CONFIG_SMP
-	{
-		.procname	= "stat_interval",
-		.data		= &sysctl_stat_interval,
-		.maxlen		= sizeof(sysctl_stat_interval),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_jiffies,
-	},
-	{
-		.procname	= "stat_refresh",
-		.data		= NULL,
-		.maxlen		= 0,
-		.mode		= 0600,
-		.proc_handler	= vmstat_refresh,
-	},
-#endif
 #ifdef CONFIG_MMU
 	{
 		.procname	= "mmap_min_addr",
diff --git a/mm/vmstat.c b/mm/vmstat.c
index bb081ae4d0ae..343735ab669d 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -31,8 +31,10 @@
 
 #include "internal.h"
 
+#ifdef CONFIG_PROC_FS
 #ifdef CONFIG_NUMA
-int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;
+#define ENABLE_NUMA_STAT 1
+static int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;
 
 /* zero numa counters within a zone */
 static void zero_zone_numa_counters(struct zone *zone)
@@ -74,7 +76,7 @@ static void invalid_numa_statistics(void)
 
 static DEFINE_MUTEX(vm_numa_stat_lock);
 
-int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
+static int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
 		void *buffer, size_t *length, loff_t *ppos)
 {
 	int ret, oldval;
@@ -102,6 +104,7 @@ int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
 	return ret;
 }
 #endif
+#endif /* CONFIG_PROC_FS */
 
 #ifdef CONFIG_VM_EVENT_COUNTERS
 DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
@@ -1937,7 +1940,7 @@ static void refresh_vm_stats(struct work_struct *work)
 	refresh_cpu_vm_stats(true);
 }
 
-int vmstat_refresh(const struct ctl_table *table, int write,
+static int vmstat_refresh(const struct ctl_table *table, int write,
 		   void *buffer, size_t *lenp, loff_t *ppos)
 {
 	long val;
@@ -2175,6 +2178,38 @@ static int __init vmstat_late_init(void)
 late_initcall(vmstat_late_init);
 #endif
 
+#ifdef CONFIG_PROC_FS
+static struct ctl_table vmstat_table[] = {
+#ifdef CONFIG_SMP
+	{
+		.procname	= "stat_interval",
+		.data		= &sysctl_stat_interval,
+		.maxlen		= sizeof(sysctl_stat_interval),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_jiffies,
+	},
+	{
+		.procname	= "stat_refresh",
+		.data		= NULL,
+		.maxlen		= 0,
+		.mode		= 0600,
+		.proc_handler	= vmstat_refresh,
+	},
+#endif
+#ifdef CONFIG_NUMA
+	{
+		.procname	= "numa_stat",
+		.data		= &sysctl_vm_numa_stat,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= sysctl_vm_numa_stat_handler,
+		.extra1		= SYSCTL_ZERO,
+		.extra2		= SYSCTL_ONE,
+	},
+#endif
+};
+#endif
+
 struct workqueue_struct *mm_percpu_wq;
 
 void __init init_mm_internals(void)
@@ -2206,6 +2241,7 @@ void __init init_mm_internals(void)
 	proc_create_seq("pagetypeinfo", 0400, NULL, &pagetypeinfo_op);
 	proc_create_seq("vmstat", 0444, NULL, &vmstat_op);
 	proc_create_seq("zoneinfo", 0444, NULL, &zoneinfo_op);
+	register_sysctl_init("vm", vmstat_table);
 #endif
 }
 
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 02/15] mm: filemap: move sysctl to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 01/15] mm: vmstat: move sysctls to " Kaixiong Yu
@ 2024-09-03  3:29   ` Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 03/15] mm: swap: " Kaixiong Yu
                     ` (13 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:29 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This moves the filemap related sysctl to its own file, and
removes the redundant external variable declaration.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 include/linux/mm.h |  2 --
 kernel/sysctl.c    |  8 --------
 mm/filemap.c       | 18 +++++++++++++++---
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index a7c74a840249..ca196ba1e2d8 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -39,8 +39,6 @@ struct user_struct;
 struct pt_regs;
 struct folio_batch;
 
-extern int sysctl_page_lock_unfairness;
-
 void mm_core_init(void);
 void init_mm_internals(void);
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 726b866af57b..2a875b739054 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2089,14 +2089,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ONE,
 		.extra2		= SYSCTL_FOUR,
 	},
-	{
-		.procname	= "page_lock_unfairness",
-		.data		= &sysctl_page_lock_unfairness,
-		.maxlen		= sizeof(sysctl_page_lock_unfairness),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
 #ifdef CONFIG_MMU
 	{
 		.procname	= "max_map_count",
diff --git a/mm/filemap.c b/mm/filemap.c
index 065d130c1c07..98e36e2b7290 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -47,6 +47,7 @@
 #include <linux/splice.h>
 #include <linux/rcupdate_wait.h>
 #include <linux/sched/mm.h>
+#include <linux/sysctl.h>
 #include <asm/pgalloc.h>
 #include <asm/tlbflush.h>
 #include "internal.h"
@@ -1069,6 +1070,19 @@ static wait_queue_head_t *folio_waitqueue(struct folio *folio)
 	return &folio_wait_table[hash_ptr(folio, PAGE_WAIT_TABLE_BITS)];
 }
 
+/* How many times do we accept lock stealing from under a waiter? */
+static int sysctl_page_lock_unfairness = 5;
+static struct ctl_table filemap_sysctl_table[] = {
+	{
+		.procname	= "page_lock_unfairness",
+		.data		= &sysctl_page_lock_unfairness,
+		.maxlen		= sizeof(sysctl_page_lock_unfairness),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+	}
+};
+
 void __init pagecache_init(void)
 {
 	int i;
@@ -1077,6 +1091,7 @@ void __init pagecache_init(void)
 		init_waitqueue_head(&folio_wait_table[i]);
 
 	page_writeback_init();
+	register_sysctl_init("vm", filemap_sysctl_table);
 }
 
 /*
@@ -1224,9 +1239,6 @@ static inline bool folio_trylock_flag(struct folio *folio, int bit_nr,
 	return true;
 }
 
-/* How many times do we accept lock stealing from under a waiter? */
-int sysctl_page_lock_unfairness = 5;
-
 static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 		int state, enum behavior behavior)
 {
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 03/15] mm: swap: move sysctl to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 01/15] mm: vmstat: move sysctls to " Kaixiong Yu
  2024-09-03  3:29   ` [PATCH v2 -next 02/15] mm: filemap: move sysctl to its own file Kaixiong Yu
@ 2024-09-03  3:29   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 04/15] mm: vmscan: move vmscan sysctls " Kaixiong Yu
                     ` (12 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:29 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The page-cluster belongs to mm/swap.c, move it into its own file.
Removes the redundant external variable declaration and unneeded
include(linux/swap.h).

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 include/linux/mm.h |  2 --
 kernel/sysctl.c    | 10 ----------
 mm/swap.c          | 16 +++++++++++++++-
 mm/swap.h          |  1 +
 4 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index ca196ba1e2d8..99f3c84652d8 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -75,8 +75,6 @@ static inline void totalram_pages_add(long count)
 }
 
 extern void * high_memory;
-extern int page_cluster;
-extern const int page_cluster_max;
 
 #ifdef CONFIG_SYSCTL
 extern int sysctl_legacy_va_layout;
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 2a875b739054..9fad501311a1 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -21,7 +21,6 @@
 
 #include <linux/module.h>
 #include <linux/mm.h>
-#include <linux/swap.h>
 #include <linux/slab.h>
 #include <linux/sysctl.h>
 #include <linux/bitmap.h>
@@ -2054,15 +2053,6 @@ static struct ctl_table vm_table[] = {
 		.mode		= 0644,
 		.proc_handler	= overcommit_kbytes_handler,
 	},
-	{
-		.procname	= "page-cluster",
-		.data		= &page_cluster,
-		.maxlen		= sizeof(int),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-		.extra2		= (void *)&page_cluster_max,
-	},
 	{
 		.procname	= "dirtytime_expire_seconds",
 		.data		= &dirtytime_expire_interval,
diff --git a/mm/swap.c b/mm/swap.c
index 510573d7e82e..07cbd55938e8 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -45,7 +45,7 @@
 
 /* How many pages do we try to swap or page in/out together? As a power of 2 */
 int page_cluster;
-const int page_cluster_max = 31;
+static const int page_cluster_max = 31;
 
 struct cpu_fbatches {
 	/*
@@ -1089,6 +1089,18 @@ void folio_batch_remove_exceptionals(struct folio_batch *fbatch)
 	fbatch->nr = j;
 }
 
+static struct ctl_table swap_sysctl_table[] = {
+	{
+		.procname	= "page-cluster",
+		.data		= &page_cluster,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+		.extra2		= (void *)&page_cluster_max,
+	}
+};
+
 /*
  * Perform any setup for the swap system
  */
@@ -1105,4 +1117,6 @@ void __init swap_setup(void)
 	 * Right now other parts of the system means that we
 	 * _really_ don't want to cluster much more
 	 */
+
+	register_sysctl_init("vm", swap_sysctl_table);
 }
diff --git a/mm/swap.h b/mm/swap.h
index f8711ff82f84..7283593a0d4a 100644
--- a/mm/swap.h
+++ b/mm/swap.h
@@ -3,6 +3,7 @@
 #define _MM_SWAP_H
 
 struct mempolicy;
+extern int page_cluster;
 
 #ifdef CONFIG_SWAP
 #include <linux/swapops.h> /* for swp_offset */
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 04/15] mm: vmscan: move vmscan sysctls to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (2 preceding siblings ...)
  2024-09-03  3:29   ` [PATCH v2 -next 03/15] mm: swap: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 05/15] mm: util: move sysctls into it own files Kaixiong Yu
                     ` (11 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This moves vm_swappiness and zone_reclaim_mode to its own file,
as part of the kernel/sysctl.c cleaning, also moves some external
variable declarations and function declarations from include/linux/swap.h
into mm/internal.h.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 include/linux/swap.h |  9 ---------
 kernel/sysctl.c      | 19 -------------------
 mm/internal.h        | 10 ++++++++++
 mm/vmscan.c          | 23 +++++++++++++++++++++++
 4 files changed, 33 insertions(+), 28 deletions(-)

diff --git a/include/linux/swap.h b/include/linux/swap.h
index ca533b478c21..c95fb8d87b05 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -425,19 +425,10 @@ extern int vm_swappiness;
 long remove_mapping(struct address_space *mapping, struct folio *folio);
 
 #ifdef CONFIG_NUMA
-extern int node_reclaim_mode;
 extern int sysctl_min_unmapped_ratio;
 extern int sysctl_min_slab_ratio;
-#else
-#define node_reclaim_mode 0
 #endif
 
-static inline bool node_reclaim_enabled(void)
-{
-	/* Is any node_reclaim_mode bit set? */
-	return node_reclaim_mode & (RECLAIM_ZONE|RECLAIM_WRITE|RECLAIM_UNMAP);
-}
-
 void check_move_unevictable_folios(struct folio_batch *fbatch);
 
 extern void __meminit kswapd_run(int nid);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 9fad501311a1..184d39944e16 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2061,15 +2061,6 @@ static struct ctl_table vm_table[] = {
 		.proc_handler	= dirtytime_interval_handler,
 		.extra1		= SYSCTL_ZERO,
 	},
-	{
-		.procname	= "swappiness",
-		.data		= &vm_swappiness,
-		.maxlen		= sizeof(vm_swappiness),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-		.extra2		= SYSCTL_TWO_HUNDRED,
-	},
 	{
 		.procname	= "drop_caches",
 		.data		= &sysctl_drop_caches,
@@ -2117,16 +2108,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ZERO,
 	},
 #endif
-#ifdef CONFIG_NUMA
-	{
-		.procname	= "zone_reclaim_mode",
-		.data		= &node_reclaim_mode,
-		.maxlen		= sizeof(node_reclaim_mode),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
-#endif
 #ifdef CONFIG_MMU
 	{
 		.procname	= "mmap_min_addr",
diff --git a/mm/internal.h b/mm/internal.h
index 44c8dec1f0d7..482e63d70d96 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -1029,9 +1029,13 @@ static inline void mminit_verify_zonelist(void)
 #define NODE_RECLAIM_SUCCESS	1
 
 #ifdef CONFIG_NUMA
+extern int node_reclaim_mode;
+
 extern int node_reclaim(struct pglist_data *, gfp_t, unsigned int);
 extern int find_next_best_node(int node, nodemask_t *used_node_mask);
 #else
+#define node_reclaim_mode 0
+
 static inline int node_reclaim(struct pglist_data *pgdat, gfp_t mask,
 				unsigned int order)
 {
@@ -1043,6 +1047,12 @@ static inline int find_next_best_node(int node, nodemask_t *used_node_mask)
 }
 #endif
 
+static inline bool node_reclaim_enabled(void)
+{
+	/* Is any node_reclaim_mode bit set? */
+	return node_reclaim_mode & (RECLAIM_ZONE|RECLAIM_WRITE|RECLAIM_UNMAP);
+}
+
 /*
  * mm/memory-failure.c
  */
diff --git a/mm/vmscan.c b/mm/vmscan.c
index a9b6a8196f95..b736fa322935 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -7373,6 +7373,28 @@ void __meminit kswapd_stop(int nid)
 	pgdat_kswapd_unlock(pgdat);
 }
 
+static struct ctl_table vmscan_sysctl_table[] = {
+	{
+		.procname	= "swappiness",
+		.data		= &vm_swappiness,
+		.maxlen		= sizeof(vm_swappiness),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+		.extra2		= SYSCTL_TWO_HUNDRED,
+	},
+#ifdef CONFIG_NUMA
+	{
+		.procname	= "zone_reclaim_mode",
+		.data		= &node_reclaim_mode,
+		.maxlen		= sizeof(node_reclaim_mode),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+	}
+#endif
+};
+
 static int __init kswapd_init(void)
 {
 	int nid;
@@ -7380,6 +7402,7 @@ static int __init kswapd_init(void)
 	swap_setup();
 	for_each_node_state(nid, N_MEMORY)
  		kswapd_run(nid);
+	register_sysctl_init("vm", vmscan_sysctl_table);
 	return 0;
 }
 
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 05/15] mm: util: move sysctls into it own files
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (3 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 04/15] mm: vmscan: move vmscan sysctls " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 06/15] mm: mmap: move sysctl into its own file Kaixiong Yu
                     ` (10 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This moves all util related sysctls to its own file, as part of the
kernel/sysctl.c cleaning, also removes redundant external
variable declarations and function declarations.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 include/linux/mm.h   | 11 --------
 include/linux/mman.h |  2 --
 kernel/sysctl.c      | 37 ------------------------
 mm/util.c            | 67 ++++++++++++++++++++++++++++++++++++++------
 4 files changed, 59 insertions(+), 58 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 99f3c84652d8..93ae80146ee2 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -200,17 +200,6 @@ extern int sysctl_max_map_count;
 extern unsigned long sysctl_user_reserve_kbytes;
 extern unsigned long sysctl_admin_reserve_kbytes;
 
-extern int sysctl_overcommit_memory;
-extern int sysctl_overcommit_ratio;
-extern unsigned long sysctl_overcommit_kbytes;
-
-int overcommit_ratio_handler(const struct ctl_table *, int, void *, size_t *,
-		loff_t *);
-int overcommit_kbytes_handler(const struct ctl_table *, int, void *, size_t *,
-		loff_t *);
-int overcommit_policy_handler(const struct ctl_table *, int, void *, size_t *,
-		loff_t *);
-
 #if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP)
 #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
 #define folio_page_idx(folio, p)	(page_to_pfn(p) - folio_pfn(folio))
diff --git a/include/linux/mman.h b/include/linux/mman.h
index bcb201ab7a41..e62ef272d140 100644
--- a/include/linux/mman.h
+++ b/include/linux/mman.h
@@ -58,8 +58,6 @@
 		| MAP_HUGE_1GB)
 
 extern int sysctl_overcommit_memory;
-extern int sysctl_overcommit_ratio;
-extern unsigned long sysctl_overcommit_kbytes;
 extern struct percpu_counter vm_committed_as;
 
 #ifdef CONFIG_SMP
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 184d39944e16..ad3ac6f6c808 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2030,29 +2030,6 @@ static struct ctl_table kern_table[] = {
 };
 
 static struct ctl_table vm_table[] = {
-	{
-		.procname	= "overcommit_memory",
-		.data		= &sysctl_overcommit_memory,
-		.maxlen		= sizeof(sysctl_overcommit_memory),
-		.mode		= 0644,
-		.proc_handler	= overcommit_policy_handler,
-		.extra1		= SYSCTL_ZERO,
-		.extra2		= SYSCTL_TWO,
-	},
-	{
-		.procname	= "overcommit_ratio",
-		.data		= &sysctl_overcommit_ratio,
-		.maxlen		= sizeof(sysctl_overcommit_ratio),
-		.mode		= 0644,
-		.proc_handler	= overcommit_ratio_handler,
-	},
-	{
-		.procname	= "overcommit_kbytes",
-		.data		= &sysctl_overcommit_kbytes,
-		.maxlen		= sizeof(sysctl_overcommit_kbytes),
-		.mode		= 0644,
-		.proc_handler	= overcommit_kbytes_handler,
-	},
 	{
 		.procname	= "dirtytime_expire_seconds",
 		.data		= &dirtytime_expire_interval,
@@ -2133,20 +2110,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ZERO,
 	},
 #endif
-	{
-		.procname	= "user_reserve_kbytes",
-		.data		= &sysctl_user_reserve_kbytes,
-		.maxlen		= sizeof(sysctl_user_reserve_kbytes),
-		.mode		= 0644,
-		.proc_handler	= proc_doulongvec_minmax,
-	},
-	{
-		.procname	= "admin_reserve_kbytes",
-		.data		= &sysctl_admin_reserve_kbytes,
-		.maxlen		= sizeof(sysctl_admin_reserve_kbytes),
-		.mode		= 0644,
-		.proc_handler	= proc_doulongvec_minmax,
-	},
 #ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
 	{
 		.procname	= "mmap_rnd_bits",
diff --git a/mm/util.c b/mm/util.c
index 4f1275023eb7..27ae0365f5f7 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -12,6 +12,7 @@
 #include <linux/security.h>
 #include <linux/swap.h>
 #include <linux/swapops.h>
+#include <linux/sysctl.h>
 #include <linux/mman.h>
 #include <linux/hugetlb.h>
 #include <linux/vmalloc.h>
@@ -902,14 +903,16 @@ int folio_mc_copy(struct folio *dst, struct folio *src)
 EXPORT_SYMBOL(folio_mc_copy);
 
 int sysctl_overcommit_memory __read_mostly = OVERCOMMIT_GUESS;
-int sysctl_overcommit_ratio __read_mostly = 50;
-unsigned long sysctl_overcommit_kbytes __read_mostly;
+static int sysctl_overcommit_ratio __read_mostly = 50;
+static unsigned long sysctl_overcommit_kbytes __read_mostly;
 int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
 unsigned long sysctl_user_reserve_kbytes __read_mostly = 1UL << 17; /* 128MB */
 unsigned long sysctl_admin_reserve_kbytes __read_mostly = 1UL << 13; /* 8MB */
 
-int overcommit_ratio_handler(const struct ctl_table *table, int write, void *buffer,
-		size_t *lenp, loff_t *ppos)
+#ifdef CONFIG_SYSCTL
+
+static int overcommit_ratio_handler(const struct ctl_table *table, int write,
+				void *buffer, size_t *lenp, loff_t *ppos)
 {
 	int ret;
 
@@ -924,8 +927,8 @@ static void sync_overcommit_as(struct work_struct *dummy)
 	percpu_counter_sync(&vm_committed_as);
 }
 
-int overcommit_policy_handler(const struct ctl_table *table, int write, void *buffer,
-		size_t *lenp, loff_t *ppos)
+static int overcommit_policy_handler(const struct ctl_table *table, int write,
+				void *buffer, size_t *lenp, loff_t *ppos)
 {
 	struct ctl_table t;
 	int new_policy = -1;
@@ -960,8 +963,8 @@ int overcommit_policy_handler(const struct ctl_table *table, int write, void *bu
 	return ret;
 }
 
-int overcommit_kbytes_handler(const struct ctl_table *table, int write, void *buffer,
-		size_t *lenp, loff_t *ppos)
+static int overcommit_kbytes_handler(const struct ctl_table *table, int write,
+				void *buffer, size_t *lenp, loff_t *ppos)
 {
 	int ret;
 
@@ -971,6 +974,54 @@ int overcommit_kbytes_handler(const struct ctl_table *table, int write, void *bu
 	return ret;
 }
 
+static struct ctl_table util_sysctl_table[] = {
+	{
+		.procname	= "overcommit_memory",
+		.data		= &sysctl_overcommit_memory,
+		.maxlen		= sizeof(sysctl_overcommit_memory),
+		.mode		= 0644,
+		.proc_handler	= overcommit_policy_handler,
+		.extra1		= SYSCTL_ZERO,
+		.extra2		= SYSCTL_TWO,
+	},
+	{
+		.procname	= "overcommit_ratio",
+		.data		= &sysctl_overcommit_ratio,
+		.maxlen		= sizeof(sysctl_overcommit_ratio),
+		.mode		= 0644,
+		.proc_handler	= overcommit_ratio_handler,
+	},
+	{
+		.procname	= "overcommit_kbytes",
+		.data		= &sysctl_overcommit_kbytes,
+		.maxlen		= sizeof(sysctl_overcommit_kbytes),
+		.mode		= 0644,
+		.proc_handler	= overcommit_kbytes_handler,
+	},
+	{
+		.procname	= "user_reserve_kbytes",
+		.data		= &sysctl_user_reserve_kbytes,
+		.maxlen		= sizeof(sysctl_user_reserve_kbytes),
+		.mode		= 0644,
+		.proc_handler	= proc_doulongvec_minmax,
+	},
+	{
+		.procname	= "admin_reserve_kbytes",
+		.data		= &sysctl_admin_reserve_kbytes,
+		.maxlen		= sizeof(sysctl_admin_reserve_kbytes),
+		.mode		= 0644,
+		.proc_handler	= proc_doulongvec_minmax,
+	},
+};
+
+static int __init init_vm_util_sysctls(void)
+{
+	register_sysctl_init("vm", util_sysctl_table);
+	return 0;
+}
+subsys_initcall(init_vm_util_sysctls);
+#endif /* CONFIG_SYSCTL */
+
 /*
  * Committed memory limit enforced when OVERCOMMIT_NEVER policy is used
  */
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 06/15] mm: mmap: move sysctl into its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (4 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 05/15] mm: util: move sysctls into it own files Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 07/15] security: min_addr: " Kaixiong Yu
                     ` (9 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

This moves all mmap related sysctls to its own file, as part of the
kernel/sysctl.c cleaning, also move the variable declaration from
kernel/sysctl.c into mm/mmap.c.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
v2:
 - fix sysctl_max_map_count undeclared issue in mm/nommu.c
---
 kernel/sysctl.c | 50 +--------------------------------------------
 mm/mmap.c       | 54 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 55 insertions(+), 49 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index ad3ac6f6c808..41d4afc978e6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -127,12 +127,6 @@ enum sysctl_writes_mode {
 
 static enum sysctl_writes_mode sysctl_writes_strict = SYSCTL_WRITES_STRICT;
 #endif /* CONFIG_PROC_SYSCTL */
-
-#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
-    defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
-int sysctl_legacy_va_layout;
-#endif
-
 #endif /* CONFIG_SYSCTL */
 
 /*
@@ -2047,16 +2041,7 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ONE,
 		.extra2		= SYSCTL_FOUR,
 	},
-#ifdef CONFIG_MMU
-	{
-		.procname	= "max_map_count",
-		.data		= &sysctl_max_map_count,
-		.maxlen		= sizeof(sysctl_max_map_count),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
-#else
+#ifndef CONFIG_MMU
 	{
 		.procname	= "nr_trim_pages",
 		.data		= &sysctl_nr_trim_pages,
@@ -2074,17 +2059,6 @@ static struct ctl_table vm_table[] = {
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 	},
-#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
-    defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
-	{
-		.procname	= "legacy_va_layout",
-		.data		= &sysctl_legacy_va_layout,
-		.maxlen		= sizeof(sysctl_legacy_va_layout),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
-#endif
 #ifdef CONFIG_MMU
 	{
 		.procname	= "mmap_min_addr",
@@ -2110,28 +2084,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ZERO,
 	},
 #endif
-#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
-	{
-		.procname	= "mmap_rnd_bits",
-		.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,
-	},
-#endif
-#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
-	{
-		.procname	= "mmap_rnd_compat_bits",
-		.data		= &mmap_rnd_compat_bits,
-		.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,
-	},
-#endif
 };
 
 int __init sysctl_init_bases(void)
diff --git a/mm/mmap.c b/mm/mmap.c
index c018f5a5bffd..e3d888aa1e25 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2120,6 +2120,57 @@ struct vm_area_struct *_install_special_mapping(
 					&special_mapping_vmops);
 }
 
+#ifdef CONFIG_SYSCTL
+#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
+		defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
+int sysctl_legacy_va_layout;
+#endif
+
+static struct ctl_table mmap_table[] = {
+		{
+				.procname       = "max_map_count",
+				.data           = &sysctl_max_map_count,
+				.maxlen         = sizeof(sysctl_max_map_count),
+				.mode           = 0644,
+				.proc_handler   = proc_dointvec_minmax,
+				.extra1         = SYSCTL_ZERO,
+		},
+#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
+		defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
+		{
+				.procname       = "legacy_va_layout",
+				.data           = &sysctl_legacy_va_layout,
+				.maxlen         = sizeof(sysctl_legacy_va_layout),
+				.mode           = 0644,
+				.proc_handler   = proc_dointvec_minmax,
+				.extra1         = SYSCTL_ZERO,
+		},
+#endif
+#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
+		{
+				.procname       = "mmap_rnd_bits",
+				.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,
+		},
+#endif
+#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
+		{
+				.procname       = "mmap_rnd_compat_bits",
+				.data           = &mmap_rnd_compat_bits,
+				.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,
+		},
+#endif
+};
+#endif /* CONFIG_SYSCTL */
+
 /*
  * initialise the percpu counter for VM
  */
@@ -2129,6 +2180,9 @@ void __init mmap_init(void)
 
 	ret = percpu_counter_init(&vm_committed_as, 0, GFP_KERNEL);
 	VM_BUG_ON(ret);
+#ifdef CONFIG_SYSCTL
+	register_sysctl_init("vm", mmap_table);
+#endif
 }
 
 /*
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 07/15] security: min_addr: move sysctl into its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (5 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 06/15] mm: mmap: move sysctl into its own file Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03 16:31     ` Paul Moore
  2024-09-03  3:30   ` [PATCH v2 -next 08/15] mm: nommu: move sysctl to " Kaixiong Yu
                     ` (8 subsequent siblings)
  15 siblings, 1 reply; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The dac_mmap_min_addr belongs to min_addr.c, move it into
its own file from /kernel/sysctl.c. In the previous Linux kernel
boot process, sysctl_init_bases needs to be executed before
init_mmap_min_addr, So, register_sysctl_init should be executed
before update_mmap_min_addr in init_mmap_min_addr. And according
to the compilation condition in security/Makefile:

      obj-$(CONFIG_MMU)            += min_addr.o

if CONFIG_MMU is not defined, min_addr.c would not be included in the
compilation process. So, drop the CONFIG_MMU check.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
v2:
 - update the changelog to explain why drop CONFIG_MMU check.
---
 kernel/sysctl.c     |  9 ---------
 security/min_addr.c | 11 +++++++++++
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 41d4afc978e6..0c0bab3dad7d 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2059,15 +2059,6 @@ static struct ctl_table vm_table[] = {
 		.proc_handler	= proc_dointvec_minmax,
 		.extra1		= SYSCTL_ZERO,
 	},
-#ifdef CONFIG_MMU
-	{
-		.procname	= "mmap_min_addr",
-		.data		= &dac_mmap_min_addr,
-		.maxlen		= sizeof(unsigned long),
-		.mode		= 0644,
-		.proc_handler	= mmap_min_addr_handler,
-	},
-#endif
 #if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
    (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
 	{
diff --git a/security/min_addr.c b/security/min_addr.c
index 0ce267c041ab..b2f61649e110 100644
--- a/security/min_addr.c
+++ b/security/min_addr.c
@@ -44,8 +44,19 @@ int mmap_min_addr_handler(const struct ctl_table *table, int write,
 	return ret;
 }
 
+static struct ctl_table min_addr_sysctl_table[] = {
+	{
+		.procname	= "mmap_min_addr",
+		.data		= &dac_mmap_min_addr,
+		.maxlen		= sizeof(unsigned long),
+		.mode		= 0644,
+		.proc_handler	= mmap_min_addr_handler,
+	},
+};
+
 static int __init init_mmap_min_addr(void)
 {
+	register_sysctl_init("vm", min_addr_sysctl_table);
 	update_mmap_min_addr();
 
 	return 0;
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 08/15] mm: nommu: move sysctl to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (6 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 07/15] security: min_addr: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 09/15] fs: fs-writeback: " Kaixiong Yu
                     ` (7 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The sysctl_nr_trim_pages belongs to nommu.c, move it into its own file
from /kernel/sysctl.c. And remove the useless extern variable declaration
from include/linux/mm.h

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
---
v2:
 - fix the build error: expected ';' after top level declarator
 - fix the build error: call to undeclared function 'register_syscall_init',
   use 'register_sysctl_init' to replace it.
---
 include/linux/mm.h |  2 --
 kernel/sysctl.c    | 10 ----------
 mm/nommu.c         | 15 ++++++++++++++-
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 93ae80146ee2..b7f12988237a 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -4044,8 +4044,6 @@ unsigned long wp_shared_mapping_range(struct address_space *mapping,
 				      pgoff_t first_index, pgoff_t nr);
 #endif
 
-extern int sysctl_nr_trim_pages;
-
 #ifdef CONFIG_PRINTK
 void mem_dump_obj(void *object);
 #else
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 0c0bab3dad7d..d3de31ec74bf 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2041,16 +2041,6 @@ static struct ctl_table vm_table[] = {
 		.extra1		= SYSCTL_ONE,
 		.extra2		= SYSCTL_FOUR,
 	},
-#ifndef CONFIG_MMU
-	{
-		.procname	= "nr_trim_pages",
-		.data		= &sysctl_nr_trim_pages,
-		.maxlen		= sizeof(sysctl_nr_trim_pages),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
-#endif
 	{
 		.procname	= "vfs_cache_pressure",
 		.data		= &sysctl_vfs_cache_pressure,
diff --git a/mm/nommu.c b/mm/nommu.c
index 385b0c15add8..48b2812f492a 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -48,7 +48,6 @@ struct page *mem_map;
 unsigned long max_mapnr;
 EXPORT_SYMBOL(max_mapnr);
 unsigned long highest_memmap_pfn;
-int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
 int heap_stack_gap = 0;
 
 atomic_long_t mmap_pages_allocated;
@@ -392,6 +391,19 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
 	return mm->brk = brk;
 }
 
+static int sysctl_nr_trim_pages = CONFIG_NOMMU_INITIAL_TRIM_EXCESS;
+
+static struct ctl_table nommu_table[] = {
+	{
+		.procname	= "nr_trim_pages",
+		.data		= &sysctl_nr_trim_pages,
+		.maxlen		= sizeof(sysctl_nr_trim_pages),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+	},
+};
+
 /*
  * initialise the percpu counter for VM and region record slabs
  */
@@ -402,6 +414,7 @@ void __init mmap_init(void)
 	ret = percpu_counter_init(&vm_committed_as, 0, GFP_KERNEL);
 	VM_BUG_ON(ret);
 	vm_region_jar = KMEM_CACHE(vm_region, SLAB_PANIC|SLAB_ACCOUNT);
+	register_sysctl_init("vm", nommu_table);
 }
 
 /*
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 09/15] fs: fs-writeback: move sysctl to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (7 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 08/15] mm: nommu: move sysctl to " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 10/15] fs: drop_caches: " Kaixiong Yu
                     ` (6 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The dirtytime_expire_interval belongs to fs/fs-writeback.c, move it into
its own file from /kernel/sysctl.c. And remove the useless extern variable
declaration and the function declaration from include/linux/writeback.h

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 fs/fs-writeback.c         | 28 ++++++++++++++++++++--------
 include/linux/writeback.h |  4 ----
 kernel/sysctl.c           |  8 --------
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index d8bec3c1bb1f..9217afaa31d3 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -2413,14 +2413,7 @@ static void wakeup_dirtytime_writeback(struct work_struct *w)
 	schedule_delayed_work(&dirtytime_work, dirtytime_expire_interval * HZ);
 }
 
-static int __init start_dirtytime_writeback(void)
-{
-	schedule_delayed_work(&dirtytime_work, dirtytime_expire_interval * HZ);
-	return 0;
-}
-__initcall(start_dirtytime_writeback);
-
-int dirtytime_interval_handler(const struct ctl_table *table, int write,
+static int dirtytime_interval_handler(const struct ctl_table *table, int write,
 			       void *buffer, size_t *lenp, loff_t *ppos)
 {
 	int ret;
@@ -2431,6 +2424,25 @@ int dirtytime_interval_handler(const struct ctl_table *table, int write,
 	return ret;
 }
 
+static struct ctl_table vm_fs_writeback_table[] = {
+	{
+		.procname	= "dirtytime_expire_seconds",
+		.data		= &dirtytime_expire_interval,
+		.maxlen		= sizeof(dirtytime_expire_interval),
+		.mode		= 0644,
+		.proc_handler	= dirtytime_interval_handler,
+		.extra1		= SYSCTL_ZERO,
+	},
+};
+
+static int __init start_dirtytime_writeback(void)
+{
+	schedule_delayed_work(&dirtytime_work, dirtytime_expire_interval * HZ);
+	register_sysctl_init("vm", vm_fs_writeback_table);
+	return 0;
+}
+__initcall(start_dirtytime_writeback);
+
 /**
  * __mark_inode_dirty -	internal function to mark an inode dirty
  *
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index d6db822e4bb3..5f35b24aff7b 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -351,12 +351,8 @@ extern struct wb_domain global_wb_domain;
 /* These are exported to sysctl. */
 extern unsigned int dirty_writeback_interval;
 extern unsigned int dirty_expire_interval;
-extern unsigned int dirtytime_expire_interval;
 extern int laptop_mode;
 
-int dirtytime_interval_handler(const struct ctl_table *table, int write,
-		void *buffer, size_t *lenp, loff_t *ppos);
-
 void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty);
 unsigned long wb_calc_thresh(struct bdi_writeback *wb, unsigned long thresh);
 unsigned long cgwb_calc_thresh(struct bdi_writeback *wb);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index d3de31ec74bf..373e018b950c 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2024,14 +2024,6 @@ static struct ctl_table kern_table[] = {
 };
 
 static struct ctl_table vm_table[] = {
-	{
-		.procname	= "dirtytime_expire_seconds",
-		.data		= &dirtytime_expire_interval,
-		.maxlen		= sizeof(dirtytime_expire_interval),
-		.mode		= 0644,
-		.proc_handler	= dirtytime_interval_handler,
-		.extra1		= SYSCTL_ZERO,
-	},
 	{
 		.procname	= "drop_caches",
 		.data		= &sysctl_drop_caches,
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 10/15] fs: drop_caches: move sysctl to its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (8 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 09/15] fs: fs-writeback: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper Kaixiong Yu
                     ` (5 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The sysctl_drop_caches to fs/drop_caches.c, move it into
its own file from /kernel/sysctl.c. And remove the useless
extern variable declaration from include/linux/mm.h

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 fs/drop_caches.c   | 23 +++++++++++++++++++++--
 include/linux/mm.h |  6 ------
 kernel/sysctl.c    |  9 ---------
 3 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/fs/drop_caches.c b/fs/drop_caches.c
index d45ef541d848..f2551ace800f 100644
--- a/fs/drop_caches.c
+++ b/fs/drop_caches.c
@@ -14,7 +14,7 @@
 #include "internal.h"
 
 /* A global variable is a bit ugly, but it keeps the code simple */
-int sysctl_drop_caches;
+static int sysctl_drop_caches;
 
 static void drop_pagecache_sb(struct super_block *sb, void *unused)
 {
@@ -48,7 +48,7 @@ static void drop_pagecache_sb(struct super_block *sb, void *unused)
 	iput(toput_inode);
 }
 
-int drop_caches_sysctl_handler(const struct ctl_table *table, int write,
+static int drop_caches_sysctl_handler(const struct ctl_table *table, int write,
 		void *buffer, size_t *length, loff_t *ppos)
 {
 	int ret;
@@ -77,3 +77,22 @@ int drop_caches_sysctl_handler(const struct ctl_table *table, int write,
 	}
 	return 0;
 }
+
+static struct ctl_table drop_caches_table[] = {
+	{
+		.procname	= "drop_caches",
+		.data		= &sysctl_drop_caches,
+		.maxlen		= sizeof(int),
+		.mode		= 0200,
+		.proc_handler	= drop_caches_sysctl_handler,
+		.extra1		= SYSCTL_ONE,
+		.extra2		= SYSCTL_FOUR,
+	},
+};
+
+static int __init init_vm_drop_caches_sysctls(void)
+{
+	register_sysctl_init("vm", drop_caches_table);
+	return 0;
+}
+fs_initcall(init_vm_drop_caches_sysctls);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b7f12988237a..d48933b47076 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3765,12 +3765,6 @@ static inline int in_gate_area(struct mm_struct *mm, unsigned long addr)
 
 extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm);
 
-#ifdef CONFIG_SYSCTL
-extern int sysctl_drop_caches;
-int drop_caches_sysctl_handler(const struct ctl_table *, int, void *, size_t *,
-		loff_t *);
-#endif
-
 void drop_slab(void);
 
 #ifndef CONFIG_MMU
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 373e018b950c..d638a1bac9af 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2024,15 +2024,6 @@ static struct ctl_table kern_table[] = {
 };
 
 static struct ctl_table vm_table[] = {
-	{
-		.procname	= "drop_caches",
-		.data		= &sysctl_drop_caches,
-		.maxlen		= sizeof(int),
-		.mode		= 0200,
-		.proc_handler	= drop_caches_sysctl_handler,
-		.extra1		= SYSCTL_ONE,
-		.extra2		= SYSCTL_FOUR,
-	},
 	{
 		.procname	= "vfs_cache_pressure",
 		.data		= &sysctl_vfs_cache_pressure,
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (9 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 10/15] fs: drop_caches: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-04 19:45     ` Anna Schumaker
  2024-09-03  3:30   ` [PATCH v2 -next 12/15] fs: dcache: move the sysctl into its own file Kaixiong Yu
                     ` (4 subsequent siblings)
  15 siblings, 1 reply; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

Use vfs_pressure_ratio() to simplify code.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 net/sunrpc/auth.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
index 04534ea537c8..3d2b51d7e934 100644
--- a/net/sunrpc/auth.c
+++ b/net/sunrpc/auth.c
@@ -489,7 +489,7 @@ static unsigned long
 rpcauth_cache_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
 
 {
-	return number_cred_unused * sysctl_vfs_cache_pressure / 100;
+	return vfs_pressure_ratio(number_cred_unused);
 }
 
 static void
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 12/15] fs: dcache: move the sysctl into its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (10 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 13/15] x86: vdso: " Kaixiong Yu
                     ` (3 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

The sysctl_vfs_cache_pressure belongs to fs/dcache.c, move it to
its own file from kernel/sysctl.c. As a part of fs/dcache.c cleaning,
sysctl_vfs_cache_pressure is changed to a static variable, and change
the inline-type function vfs_pressure_ratio() to out-of-inline type,
export vfs_pressure_ratio() with EXPORT_SYMBOL_GPL to be used by other
files. Move the unneeded include(linux/dcache.h).

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christian Brauner <brauner@kernel.org>
---
v2:
- update the changelog to call out changing the inline-type function
  vfs_pressure_ratio() to out-of-inline type
---
 fs/dcache.c            | 21 +++++++++++++++++++--
 include/linux/dcache.h |  7 +------
 kernel/sysctl.c        |  9 ---------
 3 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/fs/dcache.c b/fs/dcache.c
index 0f6b16ba30d0..17ea029fa9c9 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -73,8 +73,13 @@
  * If no ancestor relationship:
  * arbitrary, since it's serialized on rename_lock
  */
-int sysctl_vfs_cache_pressure __read_mostly = 100;
-EXPORT_SYMBOL_GPL(sysctl_vfs_cache_pressure);
+static int sysctl_vfs_cache_pressure __read_mostly = 100;
+
+unsigned long vfs_pressure_ratio(unsigned long val)
+{
+	return mult_frac(val, sysctl_vfs_cache_pressure, 100);
+}
+EXPORT_SYMBOL_GPL(vfs_pressure_ratio);
 
 __cacheline_aligned_in_smp DEFINE_SEQLOCK(rename_lock);
 
@@ -201,8 +206,20 @@ static struct ctl_table fs_dcache_sysctls[] = {
 	},
 };
 
+static struct ctl_table vm_dcache_sysctls[] = {
+	{
+		.procname	= "vfs_cache_pressure",
+		.data		= &sysctl_vfs_cache_pressure,
+		.maxlen		= sizeof(sysctl_vfs_cache_pressure),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec_minmax,
+		.extra1		= SYSCTL_ZERO,
+	},
+};
+
 static int __init init_fs_dcache_sysctls(void)
 {
+	register_sysctl_init("vm", vm_dcache_sysctls);
 	register_sysctl_init("fs", fs_dcache_sysctls);
 	return 0;
 }
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index bff956f7b2b9..c81c2e9e13df 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -508,12 +508,7 @@ static inline int simple_positive(const struct dentry *dentry)
 	return d_really_is_positive(dentry) && !d_unhashed(dentry);
 }
 
-extern int sysctl_vfs_cache_pressure;
-
-static inline unsigned long vfs_pressure_ratio(unsigned long val)
-{
-	return mult_frac(val, sysctl_vfs_cache_pressure, 100);
-}
+unsigned long vfs_pressure_ratio(unsigned long val);
 
 /**
  * d_inode - Get the actual inode of this dentry
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index d638a1bac9af..6f03fc749794 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -46,7 +46,6 @@
 #include <linux/key.h>
 #include <linux/times.h>
 #include <linux/limits.h>
-#include <linux/dcache.h>
 #include <linux/syscalls.h>
 #include <linux/nfs_fs.h>
 #include <linux/acpi.h>
@@ -2024,14 +2023,6 @@ static struct ctl_table kern_table[] = {
 };
 
 static struct ctl_table vm_table[] = {
-	{
-		.procname	= "vfs_cache_pressure",
-		.data		= &sysctl_vfs_cache_pressure,
-		.maxlen		= sizeof(sysctl_vfs_cache_pressure),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec_minmax,
-		.extra1		= SYSCTL_ZERO,
-	},
 #if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
    (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
 	{
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 13/15] x86: vdso: move the sysctl into its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (11 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 12/15] fs: dcache: move the sysctl into its own file Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 14/15] sh: " Kaixiong Yu
                     ` (2 subsequent siblings)
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

When CONFIG_X86_32 is defined and CONFIG_UML is not defined,
vdso_enabled belongs to arch/x86/entry/vdso/vdso32-setup.c.
So, move it into its own file.

Before this patch, vdso_enabled was allowed to be set to
a value exceeding 1 on x86_32 architecture. After this patch is
applied, vdso_enabled is not permitted to set the value more than 1.
It does not matter, because according to the function load_vdso32(),
only vdso_enabled is set to 1, VDSO would be enabled. Other values
all mean "disabled". The same limitation could be seen in the
function vdso32_setup().

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 arch/x86/entry/vdso/vdso32-setup.c | 16 +++++++++++-----
 kernel/sysctl.c                    |  8 +-------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/x86/entry/vdso/vdso32-setup.c b/arch/x86/entry/vdso/vdso32-setup.c
index 76e4e74f35b5..5a6886a006ab 100644
--- a/arch/x86/entry/vdso/vdso32-setup.c
+++ b/arch/x86/entry/vdso/vdso32-setup.c
@@ -51,15 +51,17 @@ __setup("vdso32=", vdso32_setup);
 __setup_param("vdso=", vdso_setup, vdso32_setup, 0);
 #endif
 
-#ifdef CONFIG_X86_64
 
 #ifdef CONFIG_SYSCTL
-/* Register vsyscall32 into the ABI table */
 #include <linux/sysctl.h>
 
-static struct ctl_table abi_table2[] = {
+static struct ctl_table vdso_table[] = {
 	{
+#ifdef CONFIG_X86_64
 		.procname	= "vsyscall32",
+#elif (defined(CONFIG_X86_32) && !defined(CONFIG_UML))
+		.procname	= "vdso_enabled",
+#endif
 		.data		= &vdso32_enabled,
 		.maxlen		= sizeof(int),
 		.mode		= 0644,
@@ -71,10 +73,14 @@ static struct ctl_table abi_table2[] = {
 
 static __init int ia32_binfmt_init(void)
 {
-	register_sysctl("abi", abi_table2);
+#ifdef CONFIG_X86_64
+	/* Register vsyscall32 into the ABI table */
+	register_sysctl("abi", vdso_table);
+#elif (defined(CONFIG_X86_32) && !defined(CONFIG_UML))
+	register_sysctl_init("vm", vdso_table);
+#endif
 	return 0;
 }
 __initcall(ia32_binfmt_init);
 #endif /* CONFIG_SYSCTL */
 
-#endif	/* CONFIG_X86_64 */
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 6f03fc749794..24617be93119 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2023,17 +2023,11 @@ static struct ctl_table kern_table[] = {
 };
 
 static struct ctl_table vm_table[] = {
-#if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
-   (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
+#if defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)
 	{
 		.procname	= "vdso_enabled",
-#ifdef CONFIG_X86_32
-		.data		= &vdso32_enabled,
-		.maxlen		= sizeof(vdso32_enabled),
-#else
 		.data		= &vdso_enabled,
 		.maxlen		= sizeof(vdso_enabled),
-#endif
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec,
 		.extra1		= SYSCTL_ZERO,
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 14/15] sh: vdso: move the sysctl into its own file
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (12 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 13/15] x86: vdso: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03  3:30   ` [PATCH v2 -next 15/15] sysctl: remove unneeded include Kaixiong Yu
  2024-09-03 20:38   ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Joel Granados
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

When CONFIG_SUPERH and CONFIG_VSYSCALL are defined,
vdso_enabled belongs to arch/sh/kernel/vsyscall/vsyscall.c.
So, move it into its own file. After this patch is applied,
all sysctls of vm_table would be moved. So, delete vm_table.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 arch/sh/kernel/vsyscall/vsyscall.c | 14 ++++++++++++++
 kernel/sysctl.c                    | 14 --------------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index add35c51e017..43bc3715e38c 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/elf.h>
 #include <linux/sched.h>
+#include <linux/sysctl.h>
 #include <linux/err.h>
 
 /*
@@ -30,6 +31,17 @@ static int __init vdso_setup(char *s)
 }
 __setup("vdso=", vdso_setup);
 
+static struct ctl_table vdso_table[] = {
+	{
+		.procname	= "vdso_enabled",
+		.data		= &vdso_enabled,
+		.maxlen		= sizeof(vdso_enabled),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+		.extra1		= SYSCTL_ZERO,
+	},
+};
+
 /*
  * These symbols are defined by vsyscall.o to mark the bounds
  * of the ELF DSO images included therein.
@@ -55,6 +67,8 @@ int __init vsyscall_init(void)
 	       &vsyscall_trapa_start,
 	       &vsyscall_trapa_end - &vsyscall_trapa_start);
 
+	register_sysctl_init("vm", vdso_table);
+
 	return 0;
 }
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 24617be93119..f04da9f3abc6 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2022,23 +2022,9 @@ static struct ctl_table kern_table[] = {
 #endif
 };
 
-static struct ctl_table vm_table[] = {
-#if defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)
-	{
-		.procname	= "vdso_enabled",
-		.data		= &vdso_enabled,
-		.maxlen		= sizeof(vdso_enabled),
-		.mode		= 0644,
-		.proc_handler	= proc_dointvec,
-		.extra1		= SYSCTL_ZERO,
-	},
-#endif
-};
-
 int __init sysctl_init_bases(void)
 {
 	register_sysctl_init("kernel", kern_table);
-	register_sysctl_init("vm", vm_table);
 
 	return 0;
 }
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v2 -next 15/15] sysctl: remove unneeded include
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (13 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 14/15] sh: " Kaixiong Yu
@ 2024-09-03  3:30   ` Kaixiong Yu
  2024-09-03 20:38   ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Joel Granados
  15 siblings, 0 replies; 20+ messages in thread
From: Kaixiong Yu @ 2024-09-03  3:30 UTC (permalink / raw)
  To: akpm, mcgrof
  Cc: ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen, hpa, viro,
	brauner, jack, kees, j.granados, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

Removing unneeded mm includes in kernel/sysctl.c.

Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
Reviewed-by: Kees Cook <kees@kernel.org>
---
 kernel/sysctl.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index f04da9f3abc6..6e3e0ce4da79 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -20,8 +20,6 @@
  */
 
 #include <linux/module.h>
-#include <linux/mm.h>
-#include <linux/slab.h>
 #include <linux/sysctl.h>
 #include <linux/bitmap.h>
 #include <linux/signal.h>
@@ -30,7 +28,6 @@
 #include <linux/proc_fs.h>
 #include <linux/security.h>
 #include <linux/ctype.h>
-#include <linux/kmemleak.h>
 #include <linux/filter.h>
 #include <linux/fs.h>
 #include <linux/init.h>
@@ -41,7 +38,6 @@
 #include <linux/highuid.h>
 #include <linux/writeback.h>
 #include <linux/ratelimit.h>
-#include <linux/hugetlb.h>
 #include <linux/initrd.h>
 #include <linux/key.h>
 #include <linux/times.h>
@@ -52,13 +48,11 @@
 #include <linux/reboot.h>
 #include <linux/ftrace.h>
 #include <linux/perf_event.h>
-#include <linux/oom.h>
 #include <linux/kmod.h>
 #include <linux/capability.h>
 #include <linux/binfmts.h>
 #include <linux/sched/sysctl.h>
 #include <linux/mount.h>
-#include <linux/userfaultfd_k.h>
 #include <linux/pid.h>
 
 #include "../lib/kstrtox.h"
-- 
2.25.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2 -next 07/15] security: min_addr: move sysctl into its own file
  2024-09-03  3:30   ` [PATCH v2 -next 07/15] security: min_addr: " Kaixiong Yu
@ 2024-09-03 16:31     ` Paul Moore
  0 siblings, 0 replies; 20+ messages in thread
From: Paul Moore @ 2024-09-03 16:31 UTC (permalink / raw)
  To: Kaixiong Yu
  Cc: akpm, mcgrof, ysato, dalias, glaubitz, luto, tglx, bp,
	dave.hansen, hpa, viro, brauner, jack, kees, j.granados, willy,
	Liam.Howlett, vbabka, lorenzo.stoakes, trondmy, anna,
	chuck.lever, jlayton, neilb, okorniev, Dai.Ngo, tom, davem,
	edumazet, kuba, pabeni, jmorris, linux-sh, linux-kernel,
	linux-fsdevel, linux-mm, linux-nfs, netdev,
	linux-security-module, wangkefeng.wang

On Mon, Sep 2, 2024 at 11:31 PM Kaixiong Yu <yukaixiong@huawei.com> wrote:
>
> The dac_mmap_min_addr belongs to min_addr.c, move it into
> its own file from /kernel/sysctl.c. In the previous Linux kernel
> boot process, sysctl_init_bases needs to be executed before
> init_mmap_min_addr, So, register_sysctl_init should be executed
> before update_mmap_min_addr in init_mmap_min_addr. And according
> to the compilation condition in security/Makefile:
>
>       obj-$(CONFIG_MMU)            += min_addr.o
>
> if CONFIG_MMU is not defined, min_addr.c would not be included in the
> compilation process. So, drop the CONFIG_MMU check.
>
> Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
> Reviewed-by: Kees Cook <kees@kernel.org>
> ---
> v2:
>  - update the changelog to explain why drop CONFIG_MMU check.
> ---
>  kernel/sysctl.c     |  9 ---------
>  security/min_addr.c | 11 +++++++++++
>  2 files changed, 11 insertions(+), 9 deletions(-)

Acked-by: Paul Moore <paul@paul-moore.com>

-- 
paul-moore.com


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files
  2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
                     ` (14 preceding siblings ...)
  2024-09-03  3:30   ` [PATCH v2 -next 15/15] sysctl: remove unneeded include Kaixiong Yu
@ 2024-09-03 20:38   ` Joel Granados
  2024-09-06  2:35     ` yukaixiong
  15 siblings, 1 reply; 20+ messages in thread
From: Joel Granados @ 2024-09-03 20:38 UTC (permalink / raw)
  To: Kaixiong Yu
  Cc: akpm, mcgrof, ysato, dalias, glaubitz, luto, tglx, bp,
	dave.hansen, hpa, viro, brauner, jack, kees, willy, Liam.Howlett,
	vbabka, lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton,
	neilb, okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni,
	paul, jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang

On Tue, Sep 03, 2024 at 11:29:56AM +0800, Kaixiong Yu wrote:
> This patch series moves sysctls of vm_table in kernel/sysctl.c to
> places where they actually belong, and do some related code clean-ups.
> After this patch series, all sysctls in vm_table have been moved into its
> own files, meanwhile, delete vm_table.
> 
> All the modifications of this patch series base on
> linux-next(tags/next-20240902). To test this patch series, the code was
> compiled with both the CONFIG_SYSCTL enabled and disabled on arm64 and
> x86_64 architectures. After this patch series is applied, all files
> under /proc/sys/vm can be read or written normally.

This move make a lot of sense. The question with these multi-subsystem
patchsets is how do they go into mainline. For now I have added this to
sysctl-testing to see if it needs more work. I can push this through the
sysctl subsystem, but you need to get reviewed-by for all of the commits
in different subsystems. I'm also fine with this going in through some
other subsys if anyone wants to take it?

Best

-- 

Joel Granados


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper
  2024-09-03  3:30   ` [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper Kaixiong Yu
@ 2024-09-04 19:45     ` Anna Schumaker
  0 siblings, 0 replies; 20+ messages in thread
From: Anna Schumaker @ 2024-09-04 19:45 UTC (permalink / raw)
  To: Kaixiong Yu
  Cc: akpm, mcgrof, ysato, dalias, glaubitz, luto, tglx, bp,
	dave.hansen, hpa, viro, brauner, jack, kees, j.granados, willy,
	Liam.Howlett, vbabka, lorenzo.stoakes, trondmy, chuck.lever,
	jlayton, neilb, okorniev, Dai.Ngo, tom, davem, edumazet, kuba,
	pabeni, paul, jmorris, linux-sh, linux-kernel, linux-fsdevel,
	linux-mm, linux-nfs, netdev, linux-security-module,
	wangkefeng.wang

On Mon, Sep 2, 2024 at 11:31 PM Kaixiong Yu <yukaixiong@huawei.com> wrote:
>
> Use vfs_pressure_ratio() to simplify code.
>
> Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
> Reviewed-by: Kees Cook <kees@kernel.org>
> ---
>  net/sunrpc/auth.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
> index 04534ea537c8..3d2b51d7e934 100644
> --- a/net/sunrpc/auth.c
> +++ b/net/sunrpc/auth.c
> @@ -489,7 +489,7 @@ static unsigned long
>  rpcauth_cache_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
>
>  {
> -       return number_cred_unused * sysctl_vfs_cache_pressure / 100;
> +       return vfs_pressure_ratio(number_cred_unused);

Looks fairly straightforward to me.

Acked-by: Anna Schumaker <anna.schumaker@oracle.com>

>  }
>
>  static void
> --
> 2.25.1
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files
  2024-09-03 20:38   ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Joel Granados
@ 2024-09-06  2:35     ` yukaixiong
  0 siblings, 0 replies; 20+ messages in thread
From: yukaixiong @ 2024-09-06  2:35 UTC (permalink / raw)
  To: wangkefeng.wang@huawei.com liushixin2@huawei.com
	liuyongqiang13@huawei.com tongtiangen@huawei.com
	sunnanyong@huawei.com mawupeng1@huawei.com zuoze1@huawei.com
	zhangpeng362@huawei.com tujinjiang@huawei.com yaolulu5
  Cc: guohanjun, ysato, dalias, glaubitz, luto, tglx, bp, dave.hansen,
	hpa, viro, brauner, jack, kees, willy, Liam.Howlett, vbabka,
	lorenzo.stoakes, trondmy, anna, chuck.lever, jlayton, neilb,
	okorniev, Dai.Ngo, tom, davem, edumazet, kuba, pabeni, paul,
	jmorris, linux-sh, linux-kernel, linux-fsdevel, linux-mm,
	linux-nfs, netdev, linux-security-module, wangkefeng.wang



On 2024/9/4 4:38, Joel Granados wrote:
> On Tue, Sep 03, 2024 at 11:29:56AM +0800, Kaixiong Yu wrote:
>> This patch series moves sysctls of vm_table in kernel/sysctl.c to
>> places where they actually belong, and do some related code clean-ups.
>> After this patch series, all sysctls in vm_table have been moved into its
>> own files, meanwhile, delete vm_table.
>>
>> All the modifications of this patch series base on
>> linux-next(tags/next-20240902). To test this patch series, the code was
>> compiled with both the CONFIG_SYSCTL enabled and disabled on arm64 and
>> x86_64 architectures. After this patch series is applied, all files
>> under /proc/sys/vm can be read or written normally.
> This move make a lot of sense. The question with these multi-subsystem
> patchsets is how do they go into mainline. For now I have added this to
> sysctl-testing to see if it needs more work. I can push this through the
> sysctl subsystem, but you need to get reviewed-by for all of the commits
> in different subsystems. I'm also fine with this going in through some
> other subsys if anyone wants to take it?
>
> Best
>

Thx,Joel!:-)

Hello,everyone!

This patch series has been reviewed by Kees, Jan Kara, Christian 
Brauner, and acked
by Anna Schumaker, Paul Moore. As Joel said, this patch series need to 
get reviewed-by
for all of the commits in different subsystems. I would appreciate it if 
you could review
this patch series as soon as possible !:-)


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2024-09-06  2:35 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20240903033105eucas1p2b9d0b874da268fecb49905d90340de09@eucas1p2.samsung.com>
2024-09-03  3:29 ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
2024-09-03  3:29   ` [PATCH v2 -next 01/15] mm: vmstat: move sysctls to " Kaixiong Yu
2024-09-03  3:29   ` [PATCH v2 -next 02/15] mm: filemap: move sysctl to its own file Kaixiong Yu
2024-09-03  3:29   ` [PATCH v2 -next 03/15] mm: swap: " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 04/15] mm: vmscan: move vmscan sysctls " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 05/15] mm: util: move sysctls into it own files Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 06/15] mm: mmap: move sysctl into its own file Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 07/15] security: min_addr: " Kaixiong Yu
2024-09-03 16:31     ` Paul Moore
2024-09-03  3:30   ` [PATCH v2 -next 08/15] mm: nommu: move sysctl to " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 09/15] fs: fs-writeback: " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 10/15] fs: drop_caches: " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 11/15] sunrpc: use vfs_pressure_ratio() helper Kaixiong Yu
2024-09-04 19:45     ` Anna Schumaker
2024-09-03  3:30   ` [PATCH v2 -next 12/15] fs: dcache: move the sysctl into its own file Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 13/15] x86: vdso: " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 14/15] sh: " Kaixiong Yu
2024-09-03  3:30   ` [PATCH v2 -next 15/15] sysctl: remove unneeded include Kaixiong Yu
2024-09-03 20:38   ` [PATCH v2 -next 00/15] sysctl: move sysctls from vm_table into its own files Joel Granados
2024-09-06  2:35     ` yukaixiong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox