]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: geneve: add missing netlink policy and size for IFLA_GENEVE_INNER_PROTO_INHERIT
authorEyal Birger <eyal.birger@gmail.com>
Tue, 22 Mar 2022 04:39:54 +0000 (06:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:12:01 +0000 (15:12 +0200)
commit 36c2e31ad25bd087756b8db9584994d1d80c236b upstream.

Add missing netlink attribute policy and size calculation.
Also enable strict validation from this new attribute onwards.

Fixes: 435fe1c0c1f7 ("net: geneve: support IPv4/IPv6 as inner protocol")
Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
Link: https://lore.kernel.org/r/20220322043954.3042468-1-eyal.birger@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/geneve.c

index 623e139e81fec17a3a989e85442f0b321f051c19..d7440cc4be80ba1da299061c0f50f6e8eb60fd3b 100644 (file)
@@ -1280,6 +1280,7 @@ static void geneve_setup(struct net_device *dev)
 }
 
 static const struct nla_policy geneve_policy[IFLA_GENEVE_MAX + 1] = {
+       [IFLA_GENEVE_UNSPEC]            = { .strict_start_type = IFLA_GENEVE_INNER_PROTO_INHERIT },
        [IFLA_GENEVE_ID]                = { .type = NLA_U32 },
        [IFLA_GENEVE_REMOTE]            = { .len = sizeof_field(struct iphdr, daddr) },
        [IFLA_GENEVE_REMOTE6]           = { .len = sizeof(struct in6_addr) },
@@ -1293,6 +1294,7 @@ static const struct nla_policy geneve_policy[IFLA_GENEVE_MAX + 1] = {
        [IFLA_GENEVE_UDP_ZERO_CSUM6_RX] = { .type = NLA_U8 },
        [IFLA_GENEVE_TTL_INHERIT]       = { .type = NLA_U8 },
        [IFLA_GENEVE_DF]                = { .type = NLA_U8 },
+       [IFLA_GENEVE_INNER_PROTO_INHERIT]       = { .type = NLA_FLAG },
 };
 
 static int geneve_validate(struct nlattr *tb[], struct nlattr *data[],
@@ -1798,6 +1800,7 @@ static size_t geneve_get_size(const struct net_device *dev)
                nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_UDP_ZERO_CSUM6_TX */
                nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_UDP_ZERO_CSUM6_RX */
                nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TTL_INHERIT */
+               nla_total_size(0) +      /* IFLA_GENEVE_INNER_PROTO_INHERIT */
                0;
 }