]> git.dujemihanovic.xyz Git - linux.git/commitdiff
net: Remove ctl_table sentinel elements from several networking subsystems
authorJoel Granados <j.granados@samsung.com>
Wed, 1 May 2024 09:29:29 +0000 (11:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 May 2024 12:29:42 +0000 (13:29 +0100)
This commit comes at the tail end of a greater effort to remove the
empty elements at the end of the ctl_table arrays (sentinels) which
will reduce the overall build time size of the kernel and run time
memory bloat by ~64 bytes per sentinel (further information Link :
https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/)

To avoid lots of small commits, this commit brings together network
changes from (as they appear in MAINTAINERS) LLC, MPTCP, NETROM NETWORK
LAYER, PHONET PROTOCOL, ROSE NETWORK LAYER, RXRPC SOCKETS, SCTP
PROTOCOL, SHARED MEMORY COMMUNICATIONS (SMC), TIPC NETWORK LAYER and
NETWORKING [IPSEC]

* Remove sentinel element from ctl_table structs.
* Replace empty array registration with the register_net_sysctl_sz call
  in llc_sysctl_init
* Replace the for loop stop condition that tests for procname == NULL
  with one that depends on array size in sctp_sysctl_net_register
* Remove instances where an array element is zeroed out to make it look
  like a sentinel in xfrm_sysctl_init. This is not longer needed and is
  safe after commit c899710fe7f9 ("networking: Update to
  register_net_sysctl_sz") added the array size to the ctl_table
  registration
* Use a table_size variable to keep the value of ARRAY_SIZE

Signed-off-by: Joel Granados <j.granados@samsung.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/llc/sysctl_net_llc.c
net/mptcp/ctrl.c
net/netrom/sysctl_net_netrom.c
net/phonet/sysctl.c
net/rose/sysctl_net_rose.c
net/rxrpc/sysctl.c
net/sctp/sysctl.c
net/smc/smc_sysctl.c
net/tipc/sysctl.c
net/xfrm/xfrm_sysctl.c

index 8443a6d841b0645859328b73f0740b7872fdcb64..72e101135f8cbcce91ec01397041537e394c8871 100644 (file)
@@ -44,11 +44,6 @@ static struct ctl_table llc2_timeout_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
-       { },
-};
-
-static struct ctl_table llc_station_table[] = {
-       { },
 };
 
 static struct ctl_table_header *llc2_timeout_header;
@@ -56,8 +51,9 @@ static struct ctl_table_header *llc_station_header;
 
 int __init llc_sysctl_init(void)
 {
+       struct ctl_table empty[1] = {};
        llc2_timeout_header = register_net_sysctl(&init_net, "net/llc/llc2/timeout", llc2_timeout_table);
-       llc_station_header = register_net_sysctl(&init_net, "net/llc/station", llc_station_table);
+       llc_station_header = register_net_sysctl_sz(&init_net, "net/llc/station", empty, 0);
 
        if (!llc2_timeout_header || !llc_station_header) {
                llc_sysctl_exit();
index 8d661156ab8cf2df961b74e5255efbcc2f6a8da5..f4e7a53acc5ab46071c12279cabfc45638e7c072 100644 (file)
@@ -156,7 +156,6 @@ static struct ctl_table mptcp_sysctl_table[] = {
                .mode = 0644,
                .proc_handler = proc_dointvec_jiffies,
        },
-       {}
 };
 
 static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet)
index 79fb2d3f477b52762707c32fb77e3975c26cfb90..7dc0fa628f2e7222107dabca4d10cebff6c76ae5 100644 (file)
@@ -140,7 +140,6 @@ static struct ctl_table nr_table[] = {
                .extra1         = &min_reset,
                .extra2         = &max_reset
        },
-       { }
 };
 
 int __init nr_register_sysctl(void)
index 0d0bf41381c22abd3ab1947b20987cba56ab848a..82fc22467a095314cb704112d8f0520753e16542 100644 (file)
@@ -81,7 +81,6 @@ static struct ctl_table phonet_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_local_port_range,
        },
-       { }
 };
 
 int __init phonet_sysctl_init(void)
index d391d7758f52a68d5a85de7cf962462a99bc5286..d801315b7083963b9825aaca49fb407af7b0829f 100644 (file)
@@ -112,7 +112,6 @@ static struct ctl_table rose_table[] = {
                .extra1         = &min_window,
                .extra2         = &max_window
        },
-       { }
 };
 
 void __init rose_register_sysctl(void)
index c9bedd0e2d86794593e1e40309d391941e46a88c..9bf9a1f6e4cb22c40d0a88087ea0a57e9deb744f 100644 (file)
@@ -127,7 +127,6 @@ static struct ctl_table rxrpc_sysctl_table[] = {
                .extra1         = (void *)SYSCTL_ONE,
                .extra2         = (void *)&four,
        },
-       { }
 };
 
 int __init rxrpc_sysctl_init(void)
index 25bdf17c7262c2999112c58ea2add61c1f6cdc1c..61c6f3027e7f307f6a0445889f93ea2c4c972aae 100644 (file)
@@ -80,8 +80,6 @@ static struct ctl_table sctp_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
-
-       { /* sentinel */ }
 };
 
 /* The following index defines are used in sctp_sysctl_net_register().
@@ -384,8 +382,6 @@ static struct ctl_table sctp_net_table[] = {
                .extra1         = SYSCTL_ZERO,
                .extra2         = &pf_expose_max,
        },
-
-       { /* sentinel */ }
 };
 
 static int proc_sctp_do_hmac_alg(struct ctl_table *ctl, int write,
@@ -597,6 +593,7 @@ static int proc_sctp_do_probe_interval(struct ctl_table *ctl, int write,
 
 int sctp_sysctl_net_register(struct net *net)
 {
+       size_t table_size = ARRAY_SIZE(sctp_net_table);
        struct ctl_table *table;
        int i;
 
@@ -604,7 +601,7 @@ int sctp_sysctl_net_register(struct net *net)
        if (!table)
                return -ENOMEM;
 
-       for (i = 0; table[i].data; i++)
+       for (i = 0; i < table_size; i++)
                table[i].data += (char *)(&net->sctp) - (char *)&init_net.sctp;
 
        table[SCTP_RTO_MIN_IDX].extra2 = &net->sctp.rto_max;
@@ -613,8 +610,7 @@ int sctp_sysctl_net_register(struct net *net)
        table[SCTP_PS_RETRANS_IDX].extra1 = &net->sctp.pf_retrans;
 
        net->sctp.sysctl_header = register_net_sysctl_sz(net, "net/sctp",
-                                                        table,
-                                                        ARRAY_SIZE(sctp_net_table));
+                                                        table, table_size);
        if (net->sctp.sysctl_header == NULL) {
                kfree(table);
                return -ENOMEM;
index 4e8baa2e7ea48413aff8efb8219c2567f0355f74..13f2bc092db1bbdebe3ba9cd6204217d4fb5c102 100644 (file)
@@ -90,11 +90,11 @@ static struct ctl_table smc_table[] = {
                .extra1         = &conns_per_lgr_min,
                .extra2         = &conns_per_lgr_max,
        },
-       {  }
 };
 
 int __net_init smc_sysctl_net_init(struct net *net)
 {
+       size_t table_size = ARRAY_SIZE(smc_table);
        struct ctl_table *table;
 
        table = smc_table;
@@ -105,12 +105,12 @@ int __net_init smc_sysctl_net_init(struct net *net)
                if (!table)
                        goto err_alloc;
 
-               for (i = 0; i < ARRAY_SIZE(smc_table) - 1; i++)
+               for (i = 0; i < table_size; i++)
                        table[i].data += (void *)net - (void *)&init_net;
        }
 
        net->smc.smc_hdr = register_net_sysctl_sz(net, "net/smc", table,
-                                                 ARRAY_SIZE(smc_table));
+                                                 table_size);
        if (!net->smc.smc_hdr)
                goto err_reg;
 
index 9fb65c988f7f3e16d787f357ede0da1d44f99759..30d2e06e3d8c761712c8ce6e037698c8069d4cf2 100644 (file)
@@ -91,7 +91,6 @@ static struct ctl_table tipc_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_doulongvec_minmax,
        },
-       {}
 };
 
 int tipc_register_sysctl(void)
index e972930c292b68c131d4cd0e237924cc5dfc42ef..ca003e8a03760cd8dbb9e9f7cd5a9738eeeb7e71 100644 (file)
@@ -38,7 +38,6 @@ static struct ctl_table xfrm_table[] = {
                .mode           = 0644,
                .proc_handler   = proc_dointvec
        },
-       {}
 };
 
 int __net_init xfrm_sysctl_init(struct net *net)
@@ -57,10 +56,8 @@ int __net_init xfrm_sysctl_init(struct net *net)
        table[3].data = &net->xfrm.sysctl_acq_expires;
 
        /* Don't export sysctls to unprivileged users */
-       if (net->user_ns != &init_user_ns) {
-               table[0].procname = NULL;
+       if (net->user_ns != &init_user_ns)
                table_size = 0;
-       }
 
        net->xfrm.sysctl_hdr = register_net_sysctl_sz(net, "net/core", table,
                                                      table_size);