net/sched: cls_flower: use nla_get_be32 for TCA_FLOWER_KEY_FLAGS
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sun, 21 Mar 2021 21:05:49 +0000 (23:05 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Mar 2021 19:48:20 +0000 (12:48 -0700)
The existing code is functionally correct: iproute2 parses the ip_flags
argument for tc-flower and really packs it as big endian into the
TCA_FLOWER_KEY_FLAGS netlink attribute. But there is a problem in the
fact that W=1 builds complain:

net/sched/cls_flower.c:1047:15: warning: cast to restricted __be32

This is because we should use the dedicated helper for obtaining a
__be32 pointer to the netlink attribute, not a u32 one. This ensures
type correctness for be32_to_cpu.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_flower.c

index 832a0ec..9736df9 100644 (file)
@@ -1044,8 +1044,8 @@ static int fl_set_key_flags(struct nlattr **tb, u32 *flags_key,
                return -EINVAL;
        }
 
-       key = be32_to_cpu(nla_get_u32(tb[TCA_FLOWER_KEY_FLAGS]));
-       mask = be32_to_cpu(nla_get_u32(tb[TCA_FLOWER_KEY_FLAGS_MASK]));
+       key = be32_to_cpu(nla_get_be32(tb[TCA_FLOWER_KEY_FLAGS]));
+       mask = be32_to_cpu(nla_get_be32(tb[TCA_FLOWER_KEY_FLAGS_MASK]));
 
        *flags_key  = 0;
        *flags_mask = 0;