netlink: make range pointers in policies const
authorJakub Kicinski <kuba@kernel.org>
Wed, 25 Oct 2023 16:22:04 +0000 (09:22 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 26 Oct 2023 23:24:09 +0000 (16:24 -0700)
struct nla_policy is usually constant itself, but unless
we make the ranges inside constant we won't be able to
make range structs const. The ranges are not modified
by the core.

Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20231025162204.132528-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/bonding/bond_netlink.c
drivers/net/vxlan/vxlan_mdb.c
include/net/netlink.h
net/ipv6/ioam6_iptunnel.c
net/sched/sch_fq.c
net/sched/sch_fq_pie.c
net/sched/sch_qfq.c
net/sched/sch_taprio.c
net/wireless/nl80211.c
tools/net/ynl/ynl-gen-c.py

index 27cbe14..cfa74cf 100644 (file)
@@ -85,7 +85,7 @@ nla_put_failure:
 }
 
 /* Limit the max delay range to 300s */
-static struct netlink_range_validation delay_range = {
+static const struct netlink_range_validation delay_range = {
        .max = 300000,
 };
 
index 5e04162..3a21389 100644 (file)
@@ -311,7 +311,7 @@ vxlan_mdbe_src_list_pol[MDBE_SRC_LIST_MAX + 1] = {
        [MDBE_SRC_LIST_ENTRY] = NLA_POLICY_NESTED(vxlan_mdbe_src_list_entry_pol),
 };
 
-static struct netlink_range_validation vni_range = {
+static const struct netlink_range_validation vni_range = {
        .max = VXLAN_N_VID - 1,
 };
 
index aba2b16..83bdf78 100644 (file)
@@ -360,8 +360,8 @@ struct nla_policy {
                const u32 mask;
                const char *reject_message;
                const struct nla_policy *nested_policy;
-               struct netlink_range_validation *range;
-               struct netlink_range_validation_signed *range_signed;
+               const struct netlink_range_validation *range;
+               const struct netlink_range_validation_signed *range_signed;
                struct {
                        s16 min, max;
                };
index f6f5b83..7563f8c 100644 (file)
@@ -46,7 +46,7 @@ struct ioam6_lwt {
        struct ioam6_lwt_encap  tuninfo;
 };
 
-static struct netlink_range_validation freq_range = {
+static const struct netlink_range_validation freq_range = {
        .min = IOAM6_IPTUNNEL_FREQ_MIN,
        .max = IOAM6_IPTUNNEL_FREQ_MAX,
 };
index bf9d005..0fd18c3 100644 (file)
@@ -897,7 +897,7 @@ static int fq_resize(struct Qdisc *sch, u32 log)
        return 0;
 }
 
-static struct netlink_range_validation iq_range = {
+static const struct netlink_range_validation iq_range = {
        .max = INT_MAX,
 };
 
index 68e6acd..5b59577 100644 (file)
@@ -202,7 +202,7 @@ out:
        return NET_XMIT_CN;
 }
 
-static struct netlink_range_validation fq_pie_q_range = {
+static const struct netlink_range_validation fq_pie_q_range = {
        .min = 1,
        .max = 1 << 20,
 };
index 5598f8b..2831516 100644 (file)
@@ -213,7 +213,7 @@ static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid)
        return container_of(clc, struct qfq_class, common);
 }
 
-static struct netlink_range_validation lmax_range = {
+static const struct netlink_range_validation lmax_range = {
        .min = QFQ_MIN_LMAX,
        .max = QFQ_MAX_LMAX,
 };
index 1cb5e41..2e1949d 100644 (file)
@@ -1015,7 +1015,7 @@ static const struct nla_policy taprio_tc_policy[TCA_TAPRIO_TC_ENTRY_MAX + 1] = {
                                                              TC_FP_PREEMPTIBLE),
 };
 
-static struct netlink_range_validation_signed taprio_cycle_time_range = {
+static const struct netlink_range_validation_signed taprio_cycle_time_range = {
        .min = 0,
        .max = INT_MAX,
 };
index 2650543..2f8353b 100644 (file)
@@ -463,7 +463,7 @@ nl80211_sta_wme_policy[NL80211_STA_WME_MAX + 1] = {
        [NL80211_STA_WME_MAX_SP] = { .type = NLA_U8 },
 };
 
-static struct netlink_range_validation nl80211_punct_bitmap_range = {
+static const struct netlink_range_validation nl80211_punct_bitmap_range = {
        .min = 0,
        .max = 0xffff,
 };
index 0fee688..31fd96f 100755 (executable)
@@ -2038,7 +2038,7 @@ def print_kernel_policy_ranges(family, cw):
                 first = False
 
             sign = '' if attr.type[0] == 'u' else '_signed'
-            cw.block_start(line=f'struct netlink_range_validation{sign} {c_lower(attr.enum_name)}_range =')
+            cw.block_start(line=f'static const struct netlink_range_validation{sign} {c_lower(attr.enum_name)}_range =')
             members = []
             if 'min' in attr.checks:
                 members.append(('min', attr.get_limit('min')))