ethtool: tunnels: check the return value of nla_nest_start()
authorLi Zhong <floridsleeves@gmail.com>
Wed, 21 Sep 2022 18:17:16 +0000 (11:17 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 23 Sep 2022 02:28:10 +0000 (19:28 -0700)
Check the return value of nla_nest_start(). When starting the entry
level nested attributes, if the tailroom of socket buffer is
insufficient to store the attribute header and payload, the return value
will be NULL.

There is, however, no real bug here since if the skb is full
nla_put_be16() will fail as well and we'll error out.

Signed-off-by: Li Zhong <floridsleeves@gmail.com>
Link: https://lore.kernel.org/r/20220921181716.1629541-1-floridsleeves@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ethtool/tunnels.c

index efde3353668734d7d0457d721f8ecd7a4e0bc551..67fb414ca859b75b5a0c9f2cd20a1f4a4045f5be 100644 (file)
@@ -136,6 +136,8 @@ ethnl_tunnel_info_fill_reply(const struct ethnl_req_info *req_base,
                        goto err_cancel_table;
 
                entry = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY);
+               if (!entry)
+                       goto err_cancel_entry;
 
                if (nla_put_be16(skb, ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,
                                 htons(IANA_VXLAN_UDP_PORT)) ||