]> www.infradead.org Git - nvme.git/commitdiff
net/sched: cls_flower: add policy for TCA_FLOWER_KEY_FLAGS
authorAsbjørn Sloth Tønnesen <ast@fiberby.net>
Sat, 13 Jul 2024 02:19:02 +0000 (02:19 +0000)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jul 2024 16:14:38 +0000 (09:14 -0700)
This policy guards fl_set_key_flags() from seeing flags
not used in the context of TCA_FLOWER_KEY_FLAGS.

In order For the policy check to be performed with the
correct endianness, then we also needs to change the
attribute type to NLA_BE32 (Thanks Davide).

TCA_FLOWER_KEY_FLAGS{,_MASK} already has a be32 comment
in include/uapi/linux/pkt_cls.h.

Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net>
Tested-by: Davide Caratti <dcaratti@redhat.com>
Reviewed-by: Davide Caratti <dcaratti@redhat.com>
Link: https://patch.msgid.link/20240713021911.1631517-6-ast@fiberby.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/cls_flower.c

index 6a5cecfd9561930afc0c7c08816dd99c52386a3f..fc9a9a0b4897c1329f8277874a47155ec3d7107c 100644 (file)
 #define TCA_FLOWER_KEY_CT_FLAGS_MASK \
                (TCA_FLOWER_KEY_CT_FLAGS_MAX - 1)
 
+#define TCA_FLOWER_KEY_FLAGS_POLICY_MASK \
+               (TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT | \
+               TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST)
+
 #define TUNNEL_FLAGS_PRESENT (\
        _BITUL(IP_TUNNEL_CSUM_BIT) |            \
        _BITUL(IP_TUNNEL_DONT_FRAGMENT_BIT) |   \
@@ -676,8 +680,10 @@ static const struct nla_policy fl_policy[TCA_FLOWER_MAX + 1] = {
        [TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK]  = { .type = NLA_U16 },
        [TCA_FLOWER_KEY_ENC_UDP_DST_PORT]       = { .type = NLA_U16 },
        [TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK]  = { .type = NLA_U16 },
-       [TCA_FLOWER_KEY_FLAGS]          = { .type = NLA_U32 },
-       [TCA_FLOWER_KEY_FLAGS_MASK]     = { .type = NLA_U32 },
+       [TCA_FLOWER_KEY_FLAGS]          = NLA_POLICY_MASK(NLA_BE32,
+                                                         TCA_FLOWER_KEY_FLAGS_POLICY_MASK),
+       [TCA_FLOWER_KEY_FLAGS_MASK]     = NLA_POLICY_MASK(NLA_BE32,
+                                                         TCA_FLOWER_KEY_FLAGS_POLICY_MASK),
        [TCA_FLOWER_KEY_ICMPV4_TYPE]    = { .type = NLA_U8 },
        [TCA_FLOWER_KEY_ICMPV4_TYPE_MASK] = { .type = NLA_U8 },
        [TCA_FLOWER_KEY_ICMPV4_CODE]    = { .type = NLA_U8 },