[PATCH] fs: move and constify sysctl_nr_open_min, sysctl_nr_open_max

From: Alexey Dobriyan
Date: Wed Oct 11 2023 - 14:24:31 EST


sysctl_nr_open_min, sysctl_nr_open_max variables are really hard limits
on fs.nr_open sysctl, they aren't interesting to the rest of the code
and are constants (sysctl_nr_open is not constant obviously).

Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxx>
---

fs/file.c | 5 -----
fs/file_table.c | 10 ++++++++--
include/linux/file.h | 2 --
3 files changed, 8 insertions(+), 9 deletions(-)

--- a/fs/file.c
+++ b/fs/file.c
@@ -25,11 +25,6 @@
#include "internal.h"

unsigned int sysctl_nr_open __read_mostly = 1024*1024;
-unsigned int sysctl_nr_open_min = BITS_PER_LONG;
-/* our min() is unusable in constant expressions ;-/ */
-#define __const_min(x, y) ((x) < (y) ? (x) : (y))
-unsigned int sysctl_nr_open_max =
- __const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & -BITS_PER_LONG;

static void __free_fdtable(struct fdtable *fdt)
{
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -111,6 +111,12 @@ static int proc_nr_files(struct ctl_table *table, int write, void *buffer,
return proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
}

+static const unsigned int sysctl_nr_open_min = BITS_PER_LONG;
+/* our min() is unusable in constant expressions ;-/ */
+#define __const_min(x, y) ((x) < (y) ? (x) : (y))
+static const unsigned int sysctl_nr_open_max =
+ __const_min(INT_MAX, ~(size_t)0/sizeof(void *)) & -BITS_PER_LONG;
+
static struct ctl_table fs_stat_sysctls[] = {
{
.procname = "file-nr",
@@ -134,8 +140,8 @@ static struct ctl_table fs_stat_sysctls[] = {
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
- .extra1 = &sysctl_nr_open_min,
- .extra2 = &sysctl_nr_open_max,
+ .extra1 = (void *)&sysctl_nr_open_min,
+ .extra2 = (void *)&sysctl_nr_open_max,
},
{ }
};
--- a/include/linux/file.h
+++ b/include/linux/file.h
@@ -113,6 +113,4 @@ int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags);
extern void flush_delayed_fput(void);
extern void __fput_sync(struct file *);

-extern unsigned int sysctl_nr_open_min, sysctl_nr_open_max;
-
#endif /* __LINUX_FILE_H */