On Wed, 11 Oct 2023 19:55:00 +0300 Alexey Dobriyan <adobriyan@xxxxxxxxx> wrote: > __read_mostly predates __ro_after_init. Many variables which are marked > __read_mostly should have been __ro_after_init from day 1. > > Also, mark some stuff as "const" and "__init" while I'm at it. I did this: From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: mark-stuff-as-__ro_after_init-fix Date: Wed Oct 11 10:46:42 AM PDT 2023 revert sysctl_nr_open_min, sysctl_nr_open_max changes due to arm warning arm allnoconfig: fs/file_table.c:137:35: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 137 | .extra1 = &sysctl_nr_open_min, | ^ fs/file_table.c:138:35: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers] 138 | .extra2 = &sysctl_nr_open_max, | ^ Cc: Alexey Dobriyan <adobriyan@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/file.c | 4 ++-- include/linux/file.h | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) --- a/fs/file.c~mark-stuff-as-__ro_after_init-fix +++ a/fs/file.c @@ -25,10 +25,10 @@ #include "internal.h" unsigned int sysctl_nr_open __read_mostly = 1024*1024; -const unsigned int sysctl_nr_open_min = BITS_PER_LONG; +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)) -const unsigned int sysctl_nr_open_max = +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/include/linux/file.h~mark-stuff-as-__ro_after_init-fix +++ a/include/linux/file.h @@ -113,7 +113,6 @@ int receive_fd_replace(int new_fd, struc extern void flush_delayed_fput(void); extern void __fput_sync(struct file *); -extern const unsigned int sysctl_nr_open_min; -extern const unsigned int sysctl_nr_open_max; +extern unsigned int sysctl_nr_open_min, sysctl_nr_open_max; #endif /* __LINUX_FILE_H */ _