diff options
Diffstat (limited to 'net/tipc/node.c')
| -rw-r--r-- | net/tipc/node.c | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/net/tipc/node.c b/net/tipc/node.c index baaf93f12cbd..f29549de9245 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c @@ -1950,6 +1950,7 @@ out:  int tipc_nl_node_get_link(struct sk_buff *skb, struct genl_info *info)  {  	struct net *net = genl_info_net(info); +	struct nlattr *attrs[TIPC_NLA_LINK_MAX + 1];  	struct tipc_nl_msg msg;  	char *name;  	int err; @@ -1957,9 +1958,19 @@ int tipc_nl_node_get_link(struct sk_buff *skb, struct genl_info *info)  	msg.portid = info->snd_portid;  	msg.seq = info->snd_seq; -	if (!info->attrs[TIPC_NLA_LINK_NAME]) +	if (!info->attrs[TIPC_NLA_LINK])  		return -EINVAL; -	name = nla_data(info->attrs[TIPC_NLA_LINK_NAME]); + +	err = nla_parse_nested(attrs, TIPC_NLA_LINK_MAX, +			       info->attrs[TIPC_NLA_LINK], +			       tipc_nl_link_policy, info->extack); +	if (err) +		return err; + +	if (!attrs[TIPC_NLA_LINK_NAME]) +		return -EINVAL; + +	name = nla_data(attrs[TIPC_NLA_LINK_NAME]);  	msg.skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);  	if (!msg.skb) |