I was getting strange kernel crashes when attempting to create veth devices when I did not specify a peer argument to /bin/ip.
So this patch defaults peer_tb to all zeros and doesn't attempt to reuse the netlink attributes for the primary link to create the secondary link and now I can't reproduce the failures. Given that some of the most interesting netlink attributes to specify like a mac address or a network device name seem are generally the wrong thing to do this seems like the right approach. Signed-off-by: Eric W. Biederman <[EMAIL PROTECTED]> --- drivers/net/veth.c | 16 +++++++--------- 1 files changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 9e6a746..d49bd2c 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -313,7 +313,7 @@ static int veth_newlink(struct net_device *dev, struct net_device *peer; struct veth_priv *priv; char ifname[IFNAMSIZ]; - struct nlattr *peer_tb[IFLA_MAX + 1], **tbp; + struct nlattr *peer_tb[IFLA_MAX + 1]; /* * create and register peer first @@ -322,6 +322,7 @@ static int veth_newlink(struct net_device *dev, * skip it since no info from it is useful yet */ + memset(peer_tb, 0, sizeof(peer_tb)); if (data != NULL && data[VETH_INFO_PEER] != NULL) { struct nlattr *nla_peer; @@ -336,21 +337,18 @@ static int veth_newlink(struct net_device *dev, err = veth_validate(peer_tb, NULL); if (err < 0) return err; + } - tbp = peer_tb; - } else - tbp = tb; - - if (tbp[IFLA_IFNAME]) - nla_strlcpy(ifname, tbp[IFLA_IFNAME], IFNAMSIZ); + if (peer_tb[IFLA_IFNAME]) + nla_strlcpy(ifname, peer_tb[IFLA_IFNAME], IFNAMSIZ); else snprintf(ifname, IFNAMSIZ, DRV_NAME "%%d"); - peer = rtnl_create_link(dev->nd_net, ifname, &veth_link_ops, tbp); + peer = rtnl_create_link(dev->nd_net, ifname, &veth_link_ops, peer_tb); if (IS_ERR(peer)) return PTR_ERR(peer); - if (tbp[IFLA_ADDRESS] == NULL) + if (peer_tb[IFLA_ADDRESS] == NULL) random_ether_addr(peer->dev_addr); err = register_netdevice(peer); -- 1.5.3.rc6.17.g1911 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html