diff mbox series

[v3,2/2] net: sysctl: introduce sysctl SYSCTL_THREE

Message ID 20220415163912.26530-3-xiangxia.m.yue@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series use standard sysctl macro | expand

Checks

Context Check Description
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Series has a cover letter
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 17915 this patch: 17915
netdev/cc_maintainers warning 5 maintainers not CCed: pabeni@redhat.com netfilter-devel@vger.kernel.org lvs-devel@vger.kernel.org linux-fsdevel@vger.kernel.org coreteam@netfilter.org
netdev/build_clang success Errors and warnings before: 3255 this patch: 3255
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 17142 this patch: 17142
netdev/checkpatch warning WARNING: line length of 86 exceeds 80 columns
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/tree_selection success Guessing tree name failed - patch did not apply

Commit Message

Tonghao Zhang April 15, 2022, 4:39 p.m. UTC
From: Tonghao Zhang <xiangxia.m.yue@gmail.com>

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@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Iurii Zaikin <yzaikin@google.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: David Ahern <dsahern@kernel.org>
Cc: Simon Horman <horms@verge.net.au>
Cc: Julian Anastasov <ja@ssi.bg>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
Cc: Florian Westphal <fw@strlen.de>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Lorenz Bauer <lmb@cloudflare.com>
Cc: Akhmat Karakotov <hmukos@yandex-team.ru>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
---
 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(-)

Comments

Simon Horman April 19, 2022, 9:05 a.m. UTC | #1
On Sat, Apr 16, 2022 at 12:39:12AM +0800, xiangxia.m.yue@gmail.com wrote:
> From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> 
> This patch introdues the SYSCTL_THREE.

...

> 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/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",

Subjectively, I'm ambivalent towards the merit of this patchset,
perhaps there is some justification for it that I missed.

Objectively, I don't see anything here that would break IPVS.

IPVS portion:

Reviewed-by: Simon Horman <horms@verge.net.au>
Tonghao Zhang April 20, 2022, 12:43 p.m. UTC | #2
On Sat, Apr 16, 2022 at 12:40 AM <xiangxia.m.yue@gmail.com> wrote:
>
> From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
>
> This patch introdues the SYSCTL_THREE.
Hi Luis, Jakub
any thoughts? I have fixed v2.
> 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@kernel.org>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Iurii Zaikin <yzaikin@google.com>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
> Cc: David Ahern <dsahern@kernel.org>
> Cc: Simon Horman <horms@verge.net.au>
> Cc: Julian Anastasov <ja@ssi.bg>
> Cc: Pablo Neira Ayuso <pablo@netfilter.org>
> Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
> Cc: Florian Westphal <fw@strlen.de>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: Alexei Starovoitov <ast@kernel.org>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Marc Kleine-Budde <mkl@pengutronix.de>
> Cc: Lorenz Bauer <lmb@cloudflare.com>
> Cc: Akhmat Karakotov <hmukos@yandex-team.ru>
> Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> ---
>  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
Luis Chamberlain April 20, 2022, 7:56 p.m. UTC | #3
On Wed, Apr 20, 2022 at 08:43:14PM +0800, Tonghao Zhang wrote:
> On Sat, Apr 16, 2022 at 12:40 AM <xiangxia.m.yue@gmail.com> wrote:
> >
> > From: Tonghao Zhang <xiangxia.m.yue@gmail.com>
> >
> > This patch introdues the SYSCTL_THREE.
> Hi Luis, Jakub
> any thoughts? I have fixed v2.
> > 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@kernel.org>
> > Cc: Kees Cook <keescook@chromium.org>
> > Cc: Iurii Zaikin <yzaikin@google.com>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: Jakub Kicinski <kuba@kernel.org>
> > Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
> > Cc: David Ahern <dsahern@kernel.org>
> > Cc: Simon Horman <horms@verge.net.au>
> > Cc: Julian Anastasov <ja@ssi.bg>
> > Cc: Pablo Neira Ayuso <pablo@netfilter.org>
> > Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
> > Cc: Florian Westphal <fw@strlen.de>
> > Cc: Dmitry Vyukov <dvyukov@google.com>
> > Cc: Alexei Starovoitov <ast@kernel.org>
> > Cc: Eric Dumazet <edumazet@google.com>
> > Cc: Marc Kleine-Budde <mkl@pengutronix.de>
> > Cc: Lorenz Bauer <lmb@cloudflare.com>
> > Cc: Akhmat Karakotov <hmukos@yandex-team.ru>
> > Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>

It would be good for you to also have a separate patch which extends
the selftest for sysctl which tests that each of the values always
matches, I thought we had that test already, if not one needs to be
added for this. That should be the first patch. The second one would
add this as you are here in this patch, and the last one adds the new
SYSCTL_THREE to the selftest.

Otherwise looks good to me.

Happy to route this via sysclt-next if Jacub is OK with that.

  Luis
diff mbox series

Patch

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",