2023-02-24 12:46:02

by Johannes Berg

[permalink] [raw]
Subject: [RFC PATCH 0/2] net: netlink: full range policy improvements

Hi,

Sending this as an RFC since we're in the middle of the merge window,
and patches depend on an nl80211 patch that isn't in the tree yet.

But I think it's worthwhile doing this later.

johannes




2023-02-24 12:46:03

by Johannes Berg

[permalink] [raw]
Subject: [RFC PATCH 2/2] net: netlink: constify full range pointers

From: Johannes Berg <[email protected]>

These pointers (and with them variables they point to)
really can be const, do that.

Signed-off-by: Johannes Berg <[email protected]>
---
include/net/netlink.h | 4 ++--
net/ipv6/ioam6_iptunnel.c | 2 +-
net/wireless/nl80211.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/net/netlink.h b/include/net/netlink.h
index 52dedc8bfedd..6a4d6aae76bd 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -351,8 +351,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;
};
diff --git a/net/ipv6/ioam6_iptunnel.c b/net/ipv6/ioam6_iptunnel.c
index 790a40e2497d..dd464d915ab8 100644
--- a/net/ipv6/ioam6_iptunnel.c
+++ b/net/ipv6/ioam6_iptunnel.c
@@ -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,
};
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index fbea0e786b21..ae35b23fac73 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -462,7 +462,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,
};
--
2.39.2


2023-02-24 12:46:02

by Johannes Berg

[permalink] [raw]
Subject: [RFC PATCH 1/2] net: netlink: make full range policy macros nicer

From: Johannes Berg <[email protected]>

Since these macros are used for variable initializers
there's really no way to have a non-constant pointer,
so move the required & into the macros.

Signed-off-by: Johannes Berg <[email protected]>
---
include/net/netlink.h | 4 ++--
net/ipv6/ioam6_iptunnel.c | 4 ++--
net/wireless/nl80211.c | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/net/netlink.h b/include/net/netlink.h
index b12cd957abb4..52dedc8bfedd 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -415,13 +415,13 @@ struct nla_policy {
#define NLA_POLICY_FULL_RANGE(tp, _range) { \
.type = NLA_ENSURE_UINT_OR_BINARY_TYPE(tp), \
.validation_type = NLA_VALIDATE_RANGE_PTR, \
- .range = _range, \
+ .range = &(_range), \
}

#define NLA_POLICY_FULL_RANGE_SIGNED(tp, _range) { \
.type = NLA_ENSURE_SINT_TYPE(tp), \
.validation_type = NLA_VALIDATE_RANGE_PTR, \
- .range_signed = _range, \
+ .range_signed = &(_range), \
}

#define NLA_POLICY_MIN(tp, _min) { \
diff --git a/net/ipv6/ioam6_iptunnel.c b/net/ipv6/ioam6_iptunnel.c
index f6f5b83dd954..790a40e2497d 100644
--- a/net/ipv6/ioam6_iptunnel.c
+++ b/net/ipv6/ioam6_iptunnel.c
@@ -67,8 +67,8 @@ static struct ioam6_trace_hdr *ioam6_lwt_trace(struct lwtunnel_state *lwt)
}

static const struct nla_policy ioam6_iptunnel_policy[IOAM6_IPTUNNEL_MAX + 1] = {
- [IOAM6_IPTUNNEL_FREQ_K] = NLA_POLICY_FULL_RANGE(NLA_U32, &freq_range),
- [IOAM6_IPTUNNEL_FREQ_N] = NLA_POLICY_FULL_RANGE(NLA_U32, &freq_range),
+ [IOAM6_IPTUNNEL_FREQ_K] = NLA_POLICY_FULL_RANGE(NLA_U32, freq_range),
+ [IOAM6_IPTUNNEL_FREQ_N] = NLA_POLICY_FULL_RANGE(NLA_U32, freq_range),
[IOAM6_IPTUNNEL_MODE] = NLA_POLICY_RANGE(NLA_U8,
IOAM6_IPTUNNEL_MODE_MIN,
IOAM6_IPTUNNEL_MODE_MAX),
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 1c3b9a305f42..fbea0e786b21 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -811,7 +811,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
[NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
[NL80211_ATTR_PUNCT_BITMAP] =
- NLA_POLICY_FULL_RANGE(NLA_U32, &nl80211_punct_bitmap_range),
+ NLA_POLICY_FULL_RANGE(NLA_U32, nl80211_punct_bitmap_range),
};

/* policy for the key attributes */
--
2.39.2


2023-02-24 18:56:00

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [RFC PATCH 0/2] net: netlink: full range policy improvements

On Fri, 24 Feb 2023 13:45:51 +0100 Johannes Berg wrote:
> Sending this as an RFC since we're in the middle of the merge window,
> and patches depend on an nl80211 patch that isn't in the tree yet.
>
> But I think it's worthwhile doing this later.

LGTM, FWIW!

2023-02-24 20:01:13

by Jacob Keller

[permalink] [raw]
Subject: Re: [RFC PATCH 0/2] net: netlink: full range policy improvements



On 2/24/2023 10:55 AM, Jakub Kicinski wrote:
> On Fri, 24 Feb 2023 13:45:51 +0100 Johannes Berg wrote:
>> Sending this as an RFC since we're in the middle of the merge window,
>> and patches depend on an nl80211 patch that isn't in the tree yet.
>>
>> But I think it's worthwhile doing this later.
>
> LGTM, FWIW!

Same here.

Thanks,
Jake