return nla_put_u32(skb, IFLA_LINK, ifindex);
 }
 
+static int rtnl_fill_link_netnsid(struct sk_buff *skb,
+                                 const struct net_device *dev)
+{
+       if (dev->rtnl_link_ops && dev->rtnl_link_ops->get_link_net) {
+               struct net *link_net = dev->rtnl_link_ops->get_link_net(dev);
+
+               if (!net_eq(dev_net(dev), link_net)) {
+                       int id = peernet2id_alloc(dev_net(dev), link_net);
+
+                       if (nla_put_s32(skb, IFLA_LINK_NETNSID, id))
+                               return -EMSGSIZE;
+               }
+       }
+
+       return 0;
+}
+
 static int rtnl_fill_ifinfo(struct sk_buff *skb, struct net_device *dev,
                            int type, u32 pid, u32 seq, u32 change,
                            unsigned int flags, u32 ext_filter_mask,
                        goto nla_put_failure;
        }
 
-       if (dev->rtnl_link_ops &&
-           dev->rtnl_link_ops->get_link_net) {
-               struct net *link_net = dev->rtnl_link_ops->get_link_net(dev);
-
-               if (!net_eq(dev_net(dev), link_net)) {
-                       int id = peernet2id_alloc(dev_net(dev), link_net);
-
-                       if (nla_put_s32(skb, IFLA_LINK_NETNSID, id))
-                               goto nla_put_failure;
-               }
-       }
+       if (rtnl_fill_link_netnsid(skb, dev))
+               goto nla_put_failure;
 
        if (!(af_spec = nla_nest_start(skb, IFLA_AF_SPEC)))
                goto nla_put_failure;