ipv6 addrlabel: permit deletion of labels assigned to removed dev
as addrlabels with an interface index are left alone when the interface gets removed this results in addrlabels that can no longer be removed. Restrict validation of index to adding new addrlabels. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6811d58fc1
commit
0771275b25
1 changed files with 4 additions and 4 deletions
|
@ -422,10 +422,6 @@ static int ip6addrlbl_newdel(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
ifal->ifal_prefixlen > 128)
|
||||
return -EINVAL;
|
||||
|
||||
if (ifal->ifal_index &&
|
||||
!__dev_get_by_index(net, ifal->ifal_index))
|
||||
return -EINVAL;
|
||||
|
||||
if (!tb[IFAL_ADDRESS])
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -441,6 +437,10 @@ static int ip6addrlbl_newdel(struct sk_buff *skb, struct nlmsghdr *nlh,
|
|||
|
||||
switch(nlh->nlmsg_type) {
|
||||
case RTM_NEWADDRLABEL:
|
||||
if (ifal->ifal_index &&
|
||||
!__dev_get_by_index(net, ifal->ifal_index))
|
||||
return -EINVAL;
|
||||
|
||||
err = ip6addrlbl_add(net, pfx, ifal->ifal_prefixlen,
|
||||
ifal->ifal_index, label,
|
||||
nlh->nlmsg_flags & NLM_F_REPLACE);
|
||||
|
|
Loading…
Reference in a new issue