On Sun, May 1, 2022 at 11:56 AM <xiangxia.m.yue@xxxxxxxxx> wrote: > > From: Tonghao Zhang <xiangxia.m.yue@xxxxxxxxx> > > This patch introdues the SYSCTL_THREE. > > KUnit: > [00:10:14] ================ sysctl_test (10 subtests) ================= > [00:10:14] [PASSED] sysctl_test_api_dointvec_null_tbl_data > [00:10:14] [PASSED] sysctl_test_api_dointvec_table_maxlen_unset > [00:10:14] [PASSED] sysctl_test_api_dointvec_table_len_is_zero > [00:10:14] [PASSED] sysctl_test_api_dointvec_table_read_but_position_set > [00:10:14] [PASSED] sysctl_test_dointvec_read_happy_single_positive > [00:10:14] [PASSED] sysctl_test_dointvec_read_happy_single_negative > [00:10:14] [PASSED] sysctl_test_dointvec_write_happy_single_positive > [00:10:14] [PASSED] sysctl_test_dointvec_write_happy_single_negative > [00:10:14] [PASSED] sysctl_test_api_dointvec_write_single_less_int_min > [00:10:14] [PASSED] sysctl_test_api_dointvec_write_single_greater_int_max > [00:10:14] =================== [PASSED] sysctl_test =================== > > ./run_kselftest.sh -c sysctl > ... > ok 1 selftests: sysctl: sysctl.sh > > Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx> > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > Cc: Iurii Zaikin <yzaikin@xxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: Jakub Kicinski <kuba@xxxxxxxxxx> > Cc: Paolo Abeni <pabeni@xxxxxxxxxx> > Cc: Hideaki YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx> > Cc: David Ahern <dsahern@xxxxxxxxxx> > Cc: Simon Horman <horms@xxxxxxxxxxxx> > Cc: Julian Anastasov <ja@xxxxxx> > Cc: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> > Cc: Jozsef Kadlecsik <kadlec@xxxxxxxxxxxxx> > Cc: Florian Westphal <fw@xxxxxxxxx> > Cc: Shuah Khan <shuah@xxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Alexei Starovoitov <ast@xxxxxxxxxx> > Cc: Eric Dumazet <edumazet@xxxxxxxxxx> > Cc: Lorenz Bauer <lmb@xxxxxxxxxxxxxx> > Cc: Akhmat Karakotov <hmukos@xxxxxxxxxxxxxx> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@xxxxxxxxx> Reviewed-by: Simon Horman <horms@xxxxxxxxxxxx> v4 version, Simon added this tag. I miss this tag in v5. > --- > fs/proc/proc_sysctl.c | 2 +- > include/linux/sysctl.h | 9 +++++---- > net/core/sysctl_net_core.c | 3 +-- > net/ipv4/sysctl_net_ipv4.c | 3 +-- > net/ipv6/sysctl_net_ipv6.c | 3 +-- > net/netfilter/ipvs/ip_vs_ctl.c | 4 +--- > 6 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index 7d9cfc730bd4..5851c2a92c0d 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -26,7 +26,7 @@ static const struct file_operations proc_sys_dir_file_operations; > static const struct inode_operations proc_sys_dir_operations; > > /* shared constants to be used in various sysctls */ > -const int sysctl_vals[] = { -1, 0, 1, 2, 4, 100, 200, 1000, 3000, INT_MAX, 65535 }; > +const int sysctl_vals[] = { 0, 1, 2, 3, 4, 100, 200, 1000, 3000, INT_MAX, 65535, -1 }; > EXPORT_SYMBOL(sysctl_vals); > > const unsigned long sysctl_long_vals[] = { 0, 1, LONG_MAX }; > diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h > index 6353d6db69b2..80263f7cdb77 100644 > --- a/include/linux/sysctl.h > +++ b/include/linux/sysctl.h > @@ -38,10 +38,10 @@ struct ctl_table_header; > struct ctl_dir; > > /* Keep the same order as in fs/proc/proc_sysctl.c */ > -#define SYSCTL_NEG_ONE ((void *)&sysctl_vals[0]) > -#define SYSCTL_ZERO ((void *)&sysctl_vals[1]) > -#define SYSCTL_ONE ((void *)&sysctl_vals[2]) > -#define SYSCTL_TWO ((void *)&sysctl_vals[3]) > +#define SYSCTL_ZERO ((void *)&sysctl_vals[0]) > +#define SYSCTL_ONE ((void *)&sysctl_vals[1]) > +#define SYSCTL_TWO ((void *)&sysctl_vals[2]) > +#define SYSCTL_THREE ((void *)&sysctl_vals[3]) > #define SYSCTL_FOUR ((void *)&sysctl_vals[4]) > #define SYSCTL_ONE_HUNDRED ((void *)&sysctl_vals[5]) > #define SYSCTL_TWO_HUNDRED ((void *)&sysctl_vals[6]) > @@ -51,6 +51,7 @@ struct ctl_dir; > > /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */ > #define SYSCTL_MAXOLDUID ((void *)&sysctl_vals[10]) > +#define SYSCTL_NEG_ONE ((void *)&sysctl_vals[11]) > > extern const int sysctl_vals[]; > > diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c > index 3a0ce309ffcd..195ca5c28771 100644 > --- a/net/core/sysctl_net_core.c > +++ b/net/core/sysctl_net_core.c > @@ -25,7 +25,6 @@ > > #include "dev.h" > > -static int three = 3; > static int int_3600 = 3600; > static int min_sndbuf = SOCK_MIN_SNDBUF; > static int min_rcvbuf = SOCK_MIN_RCVBUF; > @@ -553,7 +552,7 @@ static struct ctl_table net_core_table[] = { > .mode = 0644, > .proc_handler = proc_dointvec_minmax, > .extra1 = SYSCTL_ZERO, > - .extra2 = &three, > + .extra2 = SYSCTL_THREE, > }, > { > .procname = "high_order_alloc_disable", > diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c > index 9ff60a389cd0..cd448cdd3b38 100644 > --- a/net/ipv4/sysctl_net_ipv4.c > +++ b/net/ipv4/sysctl_net_ipv4.c > @@ -20,7 +20,6 @@ > #include <net/protocol.h> > #include <net/netevent.h> > > -static int three __maybe_unused = 3; > static int tcp_retr1_max = 255; > static int ip_local_port_range_min[] = { 1, 1 }; > static int ip_local_port_range_max[] = { 65535, 65535 }; > @@ -1056,7 +1055,7 @@ static struct ctl_table ipv4_net_table[] = { > .mode = 0644, > .proc_handler = proc_fib_multipath_hash_policy, > .extra1 = SYSCTL_ZERO, > - .extra2 = &three, > + .extra2 = SYSCTL_THREE, > }, > { > .procname = "fib_multipath_hash_fields", > diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c > index 560c48d0ddb7..94a0a294c6a1 100644 > --- a/net/ipv6/sysctl_net_ipv6.c > +++ b/net/ipv6/sysctl_net_ipv6.c > @@ -23,7 +23,6 @@ > #endif > #include <linux/ioam6.h> > > -static int three = 3; > static int flowlabel_reflect_max = 0x7; > static int auto_flowlabels_max = IP6_AUTO_FLOW_LABEL_MAX; > static u32 rt6_multipath_hash_fields_all_mask = > @@ -171,7 +170,7 @@ static struct ctl_table ipv6_table_template[] = { > .mode = 0644, > .proc_handler = proc_rt6_multipath_hash_policy, > .extra1 = SYSCTL_ZERO, > - .extra2 = &three, > + .extra2 = SYSCTL_THREE, > }, > { > .procname = "fib_multipath_hash_fields", > diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c > index 7f645328b47f..efab2b06d373 100644 > --- a/net/netfilter/ipvs/ip_vs_ctl.c > +++ b/net/netfilter/ipvs/ip_vs_ctl.c > @@ -1767,8 +1767,6 @@ static int ip_vs_zero_all(struct netns_ipvs *ipvs) > > #ifdef CONFIG_SYSCTL > > -static int three = 3; > - > static int > proc_do_defense_mode(struct ctl_table *table, int write, > void *buffer, size_t *lenp, loff_t *ppos) > @@ -1977,7 +1975,7 @@ static struct ctl_table vs_vars[] = { > .mode = 0644, > .proc_handler = proc_dointvec_minmax, > .extra1 = SYSCTL_ZERO, > - .extra2 = &three, > + .extra2 = SYSCTL_THREE, > }, > { > .procname = "nat_icmp_send", > -- > 2.27.0 > -- Best regards, Tonghao