[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20211124231435.1445213-9-mcgrof@kernel.org>
Date: Wed, 24 Nov 2021 15:14:35 -0800
From: Luis Chamberlain <mcgrof@...nel.org>
To: akpm@...ux-foundation.org, keescook@...omium.org,
yzaikin@...gle.com, nixiaoming@...wei.com, ebiederm@...ssion.com,
steve@....org, gregkh@...uxfoundation.org, rafael@...nel.org,
tytso@....edu, viro@...iv.linux.org.uk, pmladek@...e.com,
senozhatsky@...omium.org, rostedt@...dmis.org,
john.ogness@...utronix.de, dgilbert@...erlog.com,
jejb@...ux.ibm.com, martin.petersen@...cle.com,
mcgrof@...badil.infradead.org, mcgrof@...nel.org,
linux-scsi@...r.kernel.org
Cc: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 8/8] sysctl: share unsigned long const values
Provide a way to share unsigned long values.
This will allow others to not have to re-invent
these values.
Signed-off-by: Luis Chamberlain <mcgrof@...nel.org>
---
fs/proc/proc_sysctl.c | 3 +++
include/linux/sysctl.h | 6 ++++++
kernel/sysctl.c | 9 +++------
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index aa743bbb8400..2b73648a19a5 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -29,6 +29,9 @@ static const struct inode_operations proc_sys_dir_operations;
const int sysctl_vals[] = { -1, 0, 1, 2, 4, 100, 200, 1000, INT_MAX };
EXPORT_SYMBOL(sysctl_vals);
+const unsigned long sysctl_long_vals[] = { 0, 1, LONG_MAX };
+EXPORT_SYMBOL_GPL(sysctl_long_vals);
+
/* Support for permanently empty directories */
struct ctl_table sysctl_mount_point[] = {
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 7946b532e964..162aaee92daf 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -50,6 +50,12 @@ struct ctl_dir;
extern const int sysctl_vals[];
+#define SYSCTL_LONG_ZERO ((void *)&sysctl_long_vals[0])
+#define SYSCTL_LONG_ONE ((void *)&sysctl_long_vals[1])
+#define SYSCTL_LONG_MAX ((void *)&sysctl_long_vals[2])
+
+extern const unsigned long sysctl_long_vals[];
+
typedef int proc_handler(struct ctl_table *ctl, int write, void *buffer,
size_t *lenp, loff_t *ppos);
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 5812d76ecee1..b8a3dcf7b925 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -99,9 +99,6 @@
/* Constants used for minimum and maximum */
-static const unsigned long zero_ul;
-static const unsigned long one_ul = 1;
-static const unsigned long long_max = LONG_MAX;
#ifdef CONFIG_PRINTK
static const int ten_thousand = 10000;
#endif
@@ -2512,7 +2509,7 @@ static struct ctl_table vm_table[] = {
.maxlen = sizeof(dirty_background_bytes),
.mode = 0644,
.proc_handler = dirty_background_bytes_handler,
- .extra1 = (void *)&one_ul,
+ .extra1 = SYSCTL_LONG_ONE,
},
{
.procname = "dirty_ratio",
@@ -2930,8 +2927,8 @@ static struct ctl_table fs_table[] = {
.maxlen = sizeof(files_stat.max_files),
.mode = 0644,
.proc_handler = proc_doulongvec_minmax,
- .extra1 = (void *)&zero_ul,
- .extra2 = (void *)&long_max,
+ .extra1 = SYSCTL_LONG_ZERO,
+ .extra2 = SYSCTL_LONG_MAX,
},
{
.procname = "nr_open",
--
2.33.0
Powered by blists - more mailing lists