From: Kaixiong Yu <yukaixiong@huawei.com>
To: <akpm@linux-foundation.org>, <mcgrof@kernel.org>
Cc: <ysato@users.sourceforge.jp>, <dalias@libc.org>,
<glaubitz@physik.fu-berlin.de>, <luto@kernel.org>,
<tglx@linutronix.de>, <bp@alien8.de>,
<dave.hansen@linux.intel.com>, <hpa@zytor.com>,
<viro@zeniv.linux.org.uk>, <brauner@kernel.org>, <jack@suse.cz>,
<kees@kernel.org>, <j.granados@samsung.com>,
<willy@infradead.org>, <Liam.Howlett@oracle.com>,
<vbabka@suse.cz>, <lorenzo.stoakes@oracle.com>,
<trondmy@kernel.org>, <anna@kernel.org>, <chuck.lever@oracle.com>,
<jlayton@kernel.org>, <neilb@suse.de>, <okorniev@redhat.com>,
<Dai.Ngo@oracle.com>, <tom@talpey.com>, <davem@davemloft.net>,
<edumazet@google.com>, <kuba@kernel.org>, <pabeni@redhat.com>,
<paul@paul-moore.com>, <jmorris@namei.org>,
<linux-sh@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-fsdevel@vger.kernel.org>, <linux-mm@kvack.org>,
<linux-nfs@vger.kernel.org>, <netdev@vger.kernel.org>,
<linux-security-module@vger.kernel.org>,
<wangkefeng.wang@huawei.com>
Subject: [PATCH -next 06/15] mm: mmap: move sysctl into its own file
Date: Mon, 26 Aug 2024 20:04:40 +0800 [thread overview]
Message-ID: <20240826120449.1666461-7-yukaixiong@huawei.com> (raw)
In-Reply-To: <20240826120449.1666461-1-yukaixiong@huawei.com>
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. Besides, move MAPCOUNT_ELF_CORE_MARGIN
and DEFAULT_MAX_MAP_COUNT into mmap.c from mm.h.
Signed-off-by: Kaixiong Yu <yukaixiong@huawei.com>
---
include/linux/mm.h | 19 ------------
kernel/sysctl.c | 50 +------------------------------
mm/mmap.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++
mm/util.c | 1 -
4 files changed, 76 insertions(+), 69 deletions(-)
diff --git a/include/linux/mm.h b/include/linux/mm.h
index a04543984a46..9400c92b4522 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -176,25 +176,6 @@ static inline void __mm_zero_struct_page(struct page *page)
#define mm_zero_struct_page(pp) ((void)memset((pp), 0, sizeof(struct page)))
#endif
-/*
- * Default maximum number of active map areas, this limits the number of vmas
- * per mm struct. Users can overwrite this number by sysctl but there is a
- * problem.
- *
- * When a program's coredump is generated as ELF format, a section is created
- * per a vma. In ELF, the number of sections is represented in unsigned short.
- * This means the number of sections should be smaller than 65535 at coredump.
- * Because the kernel adds some informative sections to a image of program at
- * generating coredump, we need some margin. The number of extra sections is
- * 1-3 now and depends on arch. We use "5" as safe margin, here.
- *
- * ELF extended numbering allows more than 65535 sections, so 16-bit bound is
- * not a hard limit any more. Although some userspace tools can be surprised by
- * that.
- */
-#define MAPCOUNT_ELF_CORE_MARGIN (5)
-#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
-
extern int sysctl_max_map_count;
extern unsigned long sysctl_user_reserve_kbytes;
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 88524a3768f6..2b37d8fb997f 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -62,6 +62,27 @@
#define arch_mmap_check(addr, len, flags) (0)
#endif
+/*
+ * Default maximum number of active map areas, this limits the number of vmas
+ * per mm struct. Users can overwrite this number by sysctl but there is a
+ * problem.
+ *
+ * When a program's coredump is generated as ELF format, a section is created
+ * per a vma. In ELF, the number of sections is represented in unsigned short.
+ * This means the number of sections should be smaller than 65535 at coredump.
+ * Because the kernel adds some informative sections to a image of program at
+ * generating coredump, we need some margin. The number of extra sections is
+ * 1-3 now and depends on arch. We use "5" as safe margin, here.
+ *
+ * ELF extended numbering allows more than 65535 sections, so 16-bit bound is
+ * not a hard limit any more. Although some userspace tools can be surprised by
+ * that.
+ */
+#define MAPCOUNT_ELF_CORE_MARGIN (5)
+#define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN)
+
+int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT;
+
#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
const int mmap_rnd_bits_min = CONFIG_ARCH_MMAP_RND_BITS_MIN;
int mmap_rnd_bits_max __ro_after_init = CONFIG_ARCH_MMAP_RND_BITS_MAX;
@@ -2171,6 +2192,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
*/
@@ -2180,6 +2252,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
}
/*
diff --git a/mm/util.c b/mm/util.c
index 04a677f04ca9..7f687563b8c7 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -906,7 +906,6 @@ EXPORT_SYMBOL(folio_mc_copy);
int sysctl_overcommit_memory __read_mostly = OVERCOMMIT_GUESS;
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 */
--
2.25.1
next prev parent reply other threads:[~2024-08-26 12:05 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20240826120559eucas1p1a1517b9f4dbeeae893fd2fa770b47232@eucas1p1.samsung.com>
2024-08-26 12:04 ` [PATCH -next 00/15] sysctl: move sysctls from vm_table into its own files Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 01/15] mm: vmstat: move sysctls to " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 02/15] mm: filemap: move sysctl to its own file Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 03/15] mm: swap: " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 04/15] mm: vmscan: move vmscan sysctls " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 05/15] mm: util: move sysctls into it own files Kaixiong Yu
2024-08-26 12:04 ` Kaixiong Yu [this message]
2024-08-26 12:04 ` [PATCH -next 07/15] security: min_addr: move sysctl into its own file Kaixiong Yu
2024-08-26 22:49 ` Paul Moore
2024-08-27 1:38 ` yukaixiong
2024-08-27 1:56 ` Paul Moore
2024-08-27 2:43 ` yukaixiong
2024-08-26 12:04 ` [PATCH -next 08/15] mm: nommu: move sysctl to " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 09/15] fs: fs-writeback: " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 10/15] fs: drop_caches: " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 11/15] sunrpc: use vfs_pressure_ratio() helper Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 12/15] fs: dcache: move the sysctl into its own file Kaixiong Yu
2024-08-26 19:56 ` Kees Cook
2024-09-02 11:04 ` Jan Kara
2024-09-02 11:17 ` Christian Brauner
2024-08-26 12:04 ` [PATCH -next 13/15] x86: vdso: " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 14/15] sh: " Kaixiong Yu
2024-08-26 12:04 ` [PATCH -next 15/15] sysctl: remove unneeded include Kaixiong Yu
2024-08-26 19:57 ` [PATCH -next 00/15] sysctl: move sysctls from vm_table into its own files Kees Cook
2024-08-27 2:03 ` yukaixiong
2024-09-02 7:17 ` Joel Granados
2024-09-02 10:55 ` yukaixiong
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=20240826120449.1666461-7-yukaixiong@huawei.com \
--to=yukaixiong@huawei.com \
--cc=Dai.Ngo@oracle.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=anna@kernel.org \
--cc=bp@alien8.de \
--cc=brauner@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dalias@libc.org \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=glaubitz@physik.fu-berlin.de \
--cc=hpa@zytor.com \
--cc=j.granados@samsung.com \
--cc=jack@suse.cz \
--cc=jlayton@kernel.org \
--cc=jmorris@namei.org \
--cc=kees@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=luto@kernel.org \
--cc=mcgrof@kernel.org \
--cc=neilb@suse.de \
--cc=netdev@vger.kernel.org \
--cc=okorniev@redhat.com \
--cc=pabeni@redhat.com \
--cc=paul@paul-moore.com \
--cc=tglx@linutronix.de \
--cc=tom@talpey.com \
--cc=trondmy@kernel.org \
--cc=vbabka@suse.cz \
--cc=viro@zeniv.linux.org.uk \
--cc=wangkefeng.wang@huawei.com \
--cc=willy@infradead.org \
--cc=ysato@users.sourceforge.jp \
/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