|
@@ -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)
|