net/sched: cls_flower: use ntohs for struct flow_dissector_key_ports

[ Upstream commit 6215afcb9a7e35cef334dc0ae7f998cc72c8465f ]

A make W=1 build complains that:

net/sched/cls_flower.c:214:20: warning: cast from restricted __be16
net/sched/cls_flower.c:214:20: warning: incorrect type in argument 1 (different base types)
net/sched/cls_flower.c:214:20:    expected unsigned short [usertype] val
net/sched/cls_flower.c:214:20:    got restricted __be16 [usertype] dst

This is because we use htons on struct flow_dissector_key_ports members
src and dst, which are defined as __be16, so they are already in network
byte order, not host. The byte swap function for the other direction
should have been used.

Because htons and ntohs do the same thing (either both swap, or none
does), this change has no functional effect except to silence the
warnings.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Vladimir Oltean 2021-03-21 23:05:48 +02:00 committed by Greg Kroah-Hartman
parent a019b8d7df
commit fccb35bbf7

View File

@ -209,16 +209,16 @@ static bool fl_range_port_dst_cmp(struct cls_fl_filter *filter,
struct fl_flow_key *key,
struct fl_flow_key *mkey)
{
__be16 min_mask, max_mask, min_val, max_val;
u16 min_mask, max_mask, min_val, max_val;
min_mask = htons(filter->mask->key.tp_range.tp_min.dst);
max_mask = htons(filter->mask->key.tp_range.tp_max.dst);
min_val = htons(filter->key.tp_range.tp_min.dst);
max_val = htons(filter->key.tp_range.tp_max.dst);
min_mask = ntohs(filter->mask->key.tp_range.tp_min.dst);
max_mask = ntohs(filter->mask->key.tp_range.tp_max.dst);
min_val = ntohs(filter->key.tp_range.tp_min.dst);
max_val = ntohs(filter->key.tp_range.tp_max.dst);
if (min_mask && max_mask) {
if (htons(key->tp_range.tp.dst) < min_val ||
htons(key->tp_range.tp.dst) > max_val)
if (ntohs(key->tp_range.tp.dst) < min_val ||
ntohs(key->tp_range.tp.dst) > max_val)
return false;
/* skb does not have min and max values */
@ -232,16 +232,16 @@ static bool fl_range_port_src_cmp(struct cls_fl_filter *filter,
struct fl_flow_key *key,
struct fl_flow_key *mkey)
{
__be16 min_mask, max_mask, min_val, max_val;
u16 min_mask, max_mask, min_val, max_val;
min_mask = htons(filter->mask->key.tp_range.tp_min.src);
max_mask = htons(filter->mask->key.tp_range.tp_max.src);
min_val = htons(filter->key.tp_range.tp_min.src);
max_val = htons(filter->key.tp_range.tp_max.src);
min_mask = ntohs(filter->mask->key.tp_range.tp_min.src);
max_mask = ntohs(filter->mask->key.tp_range.tp_max.src);
min_val = ntohs(filter->key.tp_range.tp_min.src);
max_val = ntohs(filter->key.tp_range.tp_max.src);
if (min_mask && max_mask) {
if (htons(key->tp_range.tp.src) < min_val ||
htons(key->tp_range.tp.src) > max_val)
if (ntohs(key->tp_range.tp.src) < min_val ||
ntohs(key->tp_range.tp.src) > max_val)
return false;
/* skb does not have min and max values */
@ -779,16 +779,16 @@ static int fl_set_key_port_range(struct nlattr **tb, struct fl_flow_key *key,
TCA_FLOWER_UNSPEC, sizeof(key->tp_range.tp_max.src));
if (mask->tp_range.tp_min.dst && mask->tp_range.tp_max.dst &&
htons(key->tp_range.tp_max.dst) <=
htons(key->tp_range.tp_min.dst)) {
ntohs(key->tp_range.tp_max.dst) <=
ntohs(key->tp_range.tp_min.dst)) {
NL_SET_ERR_MSG_ATTR(extack,
tb[TCA_FLOWER_KEY_PORT_DST_MIN],
"Invalid destination port range (min must be strictly smaller than max)");
return -EINVAL;
}
if (mask->tp_range.tp_min.src && mask->tp_range.tp_max.src &&
htons(key->tp_range.tp_max.src) <=
htons(key->tp_range.tp_min.src)) {
ntohs(key->tp_range.tp_max.src) <=
ntohs(key->tp_range.tp_min.src)) {
NL_SET_ERR_MSG_ATTR(extack,
tb[TCA_FLOWER_KEY_PORT_SRC_MIN],
"Invalid source port range (min must be strictly smaller than max)");