]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rtnetlink: Allocate linkinfo[] as struct rtnl_newlink_tbs.
authorKuniyuki Iwashima <kuniyu@amazon.com>
Wed, 16 Oct 2024 18:53:44 +0000 (11:53 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 22 Oct 2024 09:02:04 +0000 (11:02 +0200)
We will move linkinfo to rtnl_newlink() and pass it down to other
functions.

Let's pack it into rtnl_newlink_tbs.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/core/rtnetlink.c

index a9c92392fb1db38ebd04369d0b1fe610e8e828d5..37193402a42c4057a53a6148d08303e507d447de 100644 (file)
@@ -3622,6 +3622,7 @@ out_unregister:
 
 struct rtnl_newlink_tbs {
        struct nlattr *tb[IFLA_MAX + 1];
+       struct nlattr *linkinfo[IFLA_INFO_MAX + 1];
        struct nlattr *attr[RTNL_MAX_TYPE + 1];
        struct nlattr *slave_attr[RTNL_SLAVE_MAX_TYPE + 1];
 };
@@ -3630,7 +3631,7 @@ static int __rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh,
                          struct rtnl_newlink_tbs *tbs,
                          struct netlink_ext_ack *extack)
 {
-       struct nlattr *linkinfo[IFLA_INFO_MAX + 1];
+       struct nlattr ** const linkinfo = tbs->linkinfo;
        struct nlattr ** const tb = tbs->tb;
        const struct rtnl_link_ops *m_ops;
        struct net_device *master_dev;
@@ -3685,8 +3686,9 @@ replay:
                                                  ifla_info_policy, NULL);
                if (err < 0)
                        return err;
-       } else
-               memset(linkinfo, 0, sizeof(linkinfo));
+       } else {
+               memset(linkinfo, 0, sizeof(tbs->linkinfo));
+       }
 
        if (linkinfo[IFLA_INFO_KIND]) {
                nla_strscpy(kind, linkinfo[IFLA_INFO_KIND], sizeof(kind));