Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d5619b4 authored by YOSHIFUJI Hideaki's avatar YOSHIFUJI Hideaki Committed by David S. Miller
Browse files

[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: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
parent 2334ecbd
Loading
Loading
Loading
Loading
+18 −20
Original line number Diff line number Diff line
@@ -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;