[IPV6] ADDRCONF: Sparse: Make inet6_dump_addr() code paths more straight-forward.
Fix the following sparse warning: | net/ipv6/addrconf.c:3384:2: warning: context imbalance in 'inet6_dump_addr' - different lock contexts for basic block Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
Родитель
2334ecbdb2
Коммит
5d5619b40c
|
@ -3335,11 +3335,11 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
|
|||
ifa = ifa->if_next, ip_idx++) {
|
||||
if (ip_idx < s_ip_idx)
|
||||
continue;
|
||||
if ((err = inet6_fill_ifaddr(skb, ifa,
|
||||
err = inet6_fill_ifaddr(skb, ifa,
|
||||
NETLINK_CB(cb->skb).pid,
|
||||
cb->nlh->nlmsg_seq, RTM_NEWADDR,
|
||||
NLM_F_MULTI)) <= 0)
|
||||
goto done;
|
||||
cb->nlh->nlmsg_seq,
|
||||
RTM_NEWADDR,
|
||||
NLM_F_MULTI);
|
||||
}
|
||||
break;
|
||||
case MULTICAST_ADDR:
|
||||
|
@ -3348,11 +3348,11 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
|
|||
ifmca = ifmca->next, ip_idx++) {
|
||||
if (ip_idx < s_ip_idx)
|
||||
continue;
|
||||
if ((err = inet6_fill_ifmcaddr(skb, ifmca,
|
||||
err = inet6_fill_ifmcaddr(skb, ifmca,
|
||||
NETLINK_CB(cb->skb).pid,
|
||||
cb->nlh->nlmsg_seq, RTM_GETMULTICAST,
|
||||
NLM_F_MULTI)) <= 0)
|
||||
goto done;
|
||||
cb->nlh->nlmsg_seq,
|
||||
RTM_GETMULTICAST,
|
||||
NLM_F_MULTI);
|
||||
}
|
||||
break;
|
||||
case ANYCAST_ADDR:
|
||||
|
@ -3361,11 +3361,11 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
|
|||
ifaca = ifaca->aca_next, ip_idx++) {
|
||||
if (ip_idx < s_ip_idx)
|
||||
continue;
|
||||
if ((err = inet6_fill_ifacaddr(skb, ifaca,
|
||||
err = inet6_fill_ifacaddr(skb, ifaca,
|
||||
NETLINK_CB(cb->skb).pid,
|
||||
cb->nlh->nlmsg_seq, RTM_GETANYCAST,
|
||||
NLM_F_MULTI)) <= 0)
|
||||
goto done;
|
||||
cb->nlh->nlmsg_seq,
|
||||
RTM_GETANYCAST,
|
||||
NLM_F_MULTI);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -3373,14 +3373,12 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
|
|||
}
|
||||
read_unlock_bh(&idev->lock);
|
||||
in6_dev_put(idev);
|
||||
|
||||
if (err <= 0)
|
||||
break;
|
||||
cont:
|
||||
idx++;
|
||||
}
|
||||
done:
|
||||
if (err <= 0) {
|
||||
read_unlock_bh(&idev->lock);
|
||||
in6_dev_put(idev);
|
||||
}
|
||||
cb->args[0] = idx;
|
||||
cb->args[1] = ip_idx;
|
||||
return skb->len;
|
||||
|
|
Загрузка…
Ссылка в новой задаче