sysctl: treewide: constify ctl_table_header::ctl_table_arg
authorThomas Weißschuh <linux@weissschuh.net>
Thu, 18 Apr 2024 09:40:08 +0000 (11:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Apr 2024 07:56:31 +0000 (08:56 +0100)
To be able to constify instances of struct ctl_tables it is necessary to
remove ways through which non-const versions are exposed from the
sysctl core.
One of these is the ctl_table_arg member of struct ctl_table_header.

Constify this reference as a prerequisite for the full constification of
struct ctl_table instances.
No functional change.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
27 files changed:
drivers/net/vrf.c
include/linux/sysctl.h
ipc/ipc_sysctl.c
ipc/mq_sysctl.c
kernel/ucount.c
net/ax25/sysctl_net_ax25.c
net/bridge/br_netfilter_hooks.c
net/core/sysctl_net_core.c
net/ieee802154/6lowpan/reassembly.c
net/ipv4/devinet.c
net/ipv4/ip_fragment.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/xfrm4_policy.c
net/ipv6/addrconf.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c
net/ipv6/sysctl_net_ipv6.c
net/ipv6/xfrm6_policy.c
net/mpls/af_mpls.c
net/mptcp/ctrl.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_log.c
net/sctp/sysctl.c
net/smc/smc_sysctl.c
net/unix/sysctl_net_unix.c
net/xfrm/xfrm_sysctl.c

index bb95ce43cd97d3827e3499ca29bb2f8b51961e1d..66f8542f3b18ce76fe75548b63805bfeef4466e1 100644 (file)
@@ -1971,7 +1971,7 @@ static int vrf_netns_init_sysctl(struct net *net, struct netns_vrf *nn_vrf)
 static void vrf_netns_exit_sysctl(struct net *net)
 {
        struct netns_vrf *nn_vrf = net_generic(net, vrf_net_id);
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = nn_vrf->ctl_hdr->ctl_table_arg;
        unregister_net_sysctl_table(nn_vrf->ctl_hdr);
index ee7d33b89e9ef3d44bfa45640343ddc5c2f59113..9413241df962c71e4dcdaa61d5dad23aa13ca0a6 100644 (file)
@@ -182,7 +182,7 @@ struct ctl_table_header {
                struct rcu_head rcu;
        };
        struct completion *unregistering;
-       struct ctl_table *ctl_table_arg;
+       const struct ctl_table *ctl_table_arg;
        struct ctl_table_root *root;
        struct ctl_table_set *set;
        struct ctl_dir *parent;
index 45cb1dabce29ae0ab553c6d8f04808fe8e7f3232..3c3755918d3470c351a719a3e818dba1c4ab1994 100644 (file)
@@ -306,7 +306,7 @@ bool setup_ipc_sysctls(struct ipc_namespace *ns)
 
 void retire_ipc_sysctls(struct ipc_namespace *ns)
 {
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = ns->ipc_sysctls->ctl_table_arg;
        unregister_sysctl_table(ns->ipc_sysctls);
index 21fba3a6edaf7a0c2e96c31ff34b761cff6b79e0..69c709262f5adf97eef052cbc81656dd7ce2f641 100644 (file)
@@ -160,7 +160,7 @@ bool setup_mq_sysctls(struct ipc_namespace *ns)
 
 void retire_mq_sysctls(struct ipc_namespace *ns)
 {
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = ns->mq_sysctls->ctl_table_arg;
        unregister_sysctl_table(ns->mq_sysctls);
index 4aa6166cb8563c5ba47a04a391c797d058ff0a16..d9e283600f5c7c3a1e86ee11d94a7c6e145b85a4 100644 (file)
@@ -119,7 +119,7 @@ bool setup_userns_sysctls(struct user_namespace *ns)
 void retire_userns_sysctls(struct user_namespace *ns)
 {
 #ifdef CONFIG_SYSCTL
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = ns->sysctls->ctl_table_arg;
        unregister_sysctl_table(ns->sysctls);
index db66e11e7fe8bc8e56923d9293a89bec5f9ae3b2..e0128dc9def33237f15fd02cbccaf6e5126cc483 100644 (file)
@@ -171,7 +171,7 @@ int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
 void ax25_unregister_dev_sysctl(ax25_dev *ax25_dev)
 {
        struct ctl_table_header *header = ax25_dev->sysheader;
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        if (header) {
                ax25_dev->sysheader = NULL;
index c683d83778622b90a2fd2c9aa41de9ba6165c9f1..7948a9e7542c45f763a9356fd10214a978f459da 100644 (file)
@@ -1275,7 +1275,7 @@ static int br_netfilter_sysctl_init_net(struct net *net)
 static void br_netfilter_sysctl_exit_net(struct net *net,
                                         struct brnf_net *brnet)
 {
-       struct ctl_table *table = brnet->ctl_hdr->ctl_table_arg;
+       const struct ctl_table *table = brnet->ctl_hdr->ctl_table_arg;
 
        unregister_net_sysctl_table(brnet->ctl_hdr);
        if (!net_eq(net, &init_net))
index 6973dda3abda63e0924efa4b6b7026786e8bfb4f..903ab4a51c178a4705b7eb610958c81c5ebcfdf5 100644 (file)
@@ -743,7 +743,7 @@ err_dup:
 
 static __net_exit void sysctl_core_net_exit(struct net *net)
 {
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = net->core.sysctl_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->core.sysctl_hdr);
index 6dd960ec558cf6014f59e6e548f2585e56dcaabc..2a983cf450daf1b7b83c63ea02657f8904d5b31b 100644 (file)
@@ -399,7 +399,7 @@ err_alloc:
 
 static void __net_exit lowpan_frags_ns_sysctl_unregister(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
        struct netns_ieee802154_lowpan *ieee802154_lowpan =
                net_ieee802154_lowpan(net);
 
index 7a437f0d41905e6acfdc35743afba3a7abfd0dd5..7592f242336b7fdf67e79dbd75407cf03e841cfc 100644 (file)
@@ -2749,7 +2749,7 @@ err_alloc_all:
 static __net_exit void devinet_exit_net(struct net *net)
 {
 #ifdef CONFIG_SYSCTL
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = net->ipv4.forw_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->ipv4.forw_hdr);
index fb947d1613fe2b8b5262ff809255d3b754b57e59..534b98a0744a70706a5bff47612f17f1f30795d0 100644 (file)
@@ -632,7 +632,7 @@ err_alloc:
 
 static void __net_exit ip4_frags_ns_ctl_unregister(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->ipv4.frags_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->ipv4.frags_hdr);
index 6133f1fd848ebbafdfc4d44b2f560941d5927af8..2e29ab819967f227af6e5ee69246733404180c23 100644 (file)
@@ -3576,7 +3576,7 @@ err_dup:
 
 static __net_exit void sysctl_route_net_exit(struct net *net)
 {
-       struct ctl_table *tbl;
+       const struct ctl_table *tbl;
 
        tbl = net->ipv4.route_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->ipv4.route_hdr);
index 7e4f16a7dcc17c02b13445ab8ecf44c3d88993ba..ce5d19978a2608eebd77f03b4c83f4f47794c01d 100644 (file)
@@ -1554,7 +1554,7 @@ err_alloc:
 
 static __net_exit void ipv4_sysctl_exit_net(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        kfree(net->ipv4.sysctl_local_reserved_ports);
        table = net->ipv4.ipv4_hdr->ctl_table_arg;
index c33bca2c3841540b20e92efe4202b07646c3714c..1dda59e0aeab60a8c14b8213bf6d960c4376ba43 100644 (file)
@@ -186,7 +186,7 @@ err_alloc:
 
 static __net_exit void xfrm4_net_sysctl_exit(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        if (!net->ipv4.xfrm4_hdr)
                return;
index 3a92d002abe4b4040b8fa21c5b993180d7807f91..9aa0900abfa1731ae361eb0ed355a5874e449861 100644 (file)
@@ -7238,7 +7238,7 @@ out:
 static void __addrconf_sysctl_unregister(struct net *net,
                                         struct ipv6_devconf *p, int ifindex)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        if (!p->sysctl_header)
                return;
index d0dcbaca19943a2170f1ea6c621168f4eb8aeb67..ce8c14d8aff589a81c28fa01c9f52f58bb763163 100644 (file)
@@ -105,7 +105,7 @@ err_alloc:
 static void __net_exit nf_ct_frags6_sysctl_unregister(struct net *net)
 {
        struct nft_ct_frag6_pernet *nf_frag = nf_frag_pernet(net);
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = nf_frag->nf_frag_frags_hdr->ctl_table_arg;
        unregister_net_sysctl_table(nf_frag->nf_frag_frags_hdr);
index acb4f119e11f0a5a5c0fcd0208436c34b9e4b9e8..ee95cdcc87479817a4cafe8268af65ead7b617be 100644 (file)
@@ -487,7 +487,7 @@ err_alloc:
 
 static void __net_exit ip6_frags_ns_sysctl_unregister(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->ipv6.sysctl.frags_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->ipv6.sysctl.frags_hdr);
index 888676163e900c1b5300bb43c42b4008f5b317c5..75de55f907b079788cb8d0588069940d411920d4 100644 (file)
@@ -313,9 +313,9 @@ out_ipv6_table:
 
 static void __net_exit ipv6_sysctl_net_exit(struct net *net)
 {
-       struct ctl_table *ipv6_table;
-       struct ctl_table *ipv6_route_table;
-       struct ctl_table *ipv6_icmp_table;
+       const struct ctl_table *ipv6_table;
+       const struct ctl_table *ipv6_route_table;
+       const struct ctl_table *ipv6_icmp_table;
 
        ipv6_table = net->ipv6.sysctl.hdr->ctl_table_arg;
        ipv6_route_table = net->ipv6.sysctl.route_hdr->ctl_table_arg;
index 42fb6996b0777a9d0db3721dd566697f96d12041..4891012b692fb0ee77097ada8cd785415ec4db60 100644 (file)
@@ -218,7 +218,7 @@ err_alloc:
 
 static void __net_exit xfrm6_net_sysctl_exit(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        if (!net->ipv6.sysctl.xfrm6_hdr)
                return;
index 0315b8deed3ffeec7778acc4a098e5dc17aff209..5d2012d1cf4afd4dfed1d2978e049e1b8ed4e50d 100644 (file)
@@ -1422,7 +1422,7 @@ static void mpls_dev_sysctl_unregister(struct net_device *dev,
                                       struct mpls_dev *mdev)
 {
        struct net *net = dev_net(dev);
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        if (!mdev->sysctl)
                return;
@@ -2690,7 +2690,7 @@ static void mpls_net_exit(struct net *net)
 {
        struct mpls_route __rcu **platform_label;
        size_t platform_labels;
-       struct ctl_table *table;
+       const struct ctl_table *table;
        unsigned int index;
 
        table = net->mpls.ctl->ctl_table_arg;
index 13fe0748dde83804daa160af50827dfc899fc426..8d661156ab8cf2df961b74e5255efbcc2f6a8da5 100644 (file)
@@ -198,7 +198,7 @@ err_alloc:
 
 static void mptcp_pernet_del_table(struct mptcp_pernet *pernet)
 {
-       struct ctl_table *table = pernet->ctl_table_hdr->ctl_table_arg;
+       const struct ctl_table *table = pernet->ctl_table_hdr->ctl_table_arg;
 
        unregister_net_sysctl_table(pernet->ctl_table_hdr);
 
index 0ee98ce5b8165595d2b33e6d5c8b7848c528e6cc..bb9dea676ec1669ae51e95eb777bba3e500fec18 100644 (file)
@@ -1122,7 +1122,7 @@ out_unregister_netfilter:
 static void nf_conntrack_standalone_fini_sysctl(struct net *net)
 {
        struct nf_conntrack_net *cnet = nf_ct_pernet(net);
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = cnet->sysctl_header->ctl_table_arg;
        unregister_net_sysctl_table(cnet->sysctl_header);
index 370f8231385cab3a0ddcfb44e4a7a4bbdcd78a38..efedd2f13ac7cc4d725ca83287eea0d20da90059 100644 (file)
@@ -514,7 +514,7 @@ err_alloc:
 
 static void netfilter_log_sysctl_exit(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->nf.nf_log_dir_header->ctl_table_arg;
        unregister_net_sysctl_table(net->nf.nf_log_dir_header);
index f65d6f92afcbc2c1a152be6d0e4e6c2d66fa2a17..25bdf17c7262c2999112c58ea2add61c1f6cdc1c 100644 (file)
@@ -624,7 +624,7 @@ int sctp_sysctl_net_register(struct net *net)
 
 void sctp_sysctl_net_unregister(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->sctp.sysctl_header->ctl_table_arg;
        unregister_net_sysctl_table(net->sctp.sysctl_header);
index a5946d1b9d60c85e472a8ebd93af67ea80c22217..4e8baa2e7ea48413aff8efb8219c2567f0355f74 100644 (file)
@@ -133,7 +133,7 @@ err_alloc:
 
 void __net_exit smc_sysctl_net_exit(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->smc.smc_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->smc.smc_hdr);
index 3e84b31c355a2610d59a7205bc7bd2d61ba0e698..44996af61999b5eabc6813c6d7563eac82ad2fe2 100644 (file)
@@ -52,7 +52,7 @@ err_alloc:
 
 void unix_sysctl_unregister(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->unx.ctl->ctl_table_arg;
        unregister_net_sysctl_table(net->unx.ctl);
index 7fdeafc838a7c62539d4ca1b4f6c7b233c1dff57..e972930c292b68c131d4cd0e237924cc5dfc42ef 100644 (file)
@@ -76,7 +76,7 @@ out_kmemdup:
 
 void __net_exit xfrm_sysctl_fini(struct net *net)
 {
-       struct ctl_table *table;
+       const struct ctl_table *table;
 
        table = net->xfrm.sysctl_hdr->ctl_table_arg;
        unregister_net_sysctl_table(net->xfrm.sysctl_hdr);