On Tue 23-11-21 12:24:20, Luis Chamberlain wrote: > From: Xiaoming Ni <nixiaoming@xxxxxxxxxx> > > There is no need to user boiler plate code to specify a set of base > directories we're going to stuff sysctls under. Simplify this by using > register_sysctl() and specifying the directory path directly. > > Move inotify_user sysctl to inotify_user.c while at it to remove clutter > from kernel/sysctl.c. > > Signed-off-by: Xiaoming Ni <nixiaoming@xxxxxxxxxx> > [mcgrof: update commit log to reflect new path we decided to take] > Signed-off-by: Luis Chamberlain <mcgrof@xxxxxxxxxx> This looks fishy. You register inotify_table but not fanotify_table and remove both... Honza > --- > fs/notify/inotify/inotify_user.c | 11 ++++++++++- > include/linux/inotify.h | 3 --- > kernel/sysctl.c | 21 --------------------- > 3 files changed, 10 insertions(+), 25 deletions(-) > > diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c > index 29fca3284bb5..54583f62dc44 100644 > --- a/fs/notify/inotify/inotify_user.c > +++ b/fs/notify/inotify/inotify_user.c > @@ -58,7 +58,7 @@ struct kmem_cache *inotify_inode_mark_cachep __read_mostly; > static long it_zero = 0; > static long it_int_max = INT_MAX; > > -struct ctl_table inotify_table[] = { > +static struct ctl_table inotify_table[] = { > { > .procname = "max_user_instances", > .data = &init_user_ns.ucount_max[UCOUNT_INOTIFY_INSTANCES], > @@ -87,6 +87,14 @@ struct ctl_table inotify_table[] = { > }, > { } > }; > + > +static void __init inotify_sysctls_init(void) > +{ > + register_sysctl("fs/inotify", inotify_table); > +} > + > +#else > +#define inotify_sysctls_init() do { } while (0) > #endif /* CONFIG_SYSCTL */ > > static inline __u32 inotify_arg_to_mask(struct inode *inode, u32 arg) > @@ -849,6 +857,7 @@ static int __init inotify_user_setup(void) > inotify_max_queued_events = 16384; > init_user_ns.ucount_max[UCOUNT_INOTIFY_INSTANCES] = 128; > init_user_ns.ucount_max[UCOUNT_INOTIFY_WATCHES] = watches_max; > + inotify_sysctls_init(); > > return 0; > } > diff --git a/include/linux/inotify.h b/include/linux/inotify.h > index 6a24905f6e1e..8d20caa1b268 100644 > --- a/include/linux/inotify.h > +++ b/include/linux/inotify.h > @@ -7,11 +7,8 @@ > #ifndef _LINUX_INOTIFY_H > #define _LINUX_INOTIFY_H > > -#include <linux/sysctl.h> > #include <uapi/linux/inotify.h> > > -extern struct ctl_table inotify_table[]; /* for sysctl */ > - > #define ALL_INOTIFY_BITS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ > IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ > IN_MOVED_TO | IN_CREATE | IN_DELETE | \ > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 7a90a12b9ea4..6aa67c737e4e 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -125,13 +125,6 @@ static const int maxolduid = 65535; > static const int ngroups_max = NGROUPS_MAX; > static const int cap_last_cap = CAP_LAST_CAP; > > -#ifdef CONFIG_INOTIFY_USER > -#include <linux/inotify.h> > -#endif > -#ifdef CONFIG_FANOTIFY > -#include <linux/fanotify.h> > -#endif > - > #ifdef CONFIG_PROC_SYSCTL > > /** > @@ -3099,20 +3092,6 @@ static struct ctl_table fs_table[] = { > .proc_handler = proc_dointvec, > }, > #endif > -#ifdef CONFIG_INOTIFY_USER > - { > - .procname = "inotify", > - .mode = 0555, > - .child = inotify_table, > - }, > -#endif > -#ifdef CONFIG_FANOTIFY > - { > - .procname = "fanotify", > - .mode = 0555, > - .child = fanotify_table, > - }, > -#endif > #ifdef CONFIG_EPOLL > { > .procname = "epoll", > -- > 2.33.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR