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

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

[IPV6] ADDRCONF: Fix possible inet6_ifaddr leakage with CONFIG_OPTIMISTIC_DAD.



The inet6_ifaddr for source address of RS is leaked if the address
is not an optimistic address.

Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 95c385b4
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -627,7 +627,6 @@ void ndisc_send_rs(struct net_device *dev, struct in6_addr *saddr,
	struct sk_buff *skb;
	struct icmp6hdr *hdr;
	__u8 * opt;
	struct inet6_ifaddr *ifp;
	int send_sllao = dev->addr_len;
	int len;
	int err;
@@ -643,12 +642,12 @@ void ndisc_send_rs(struct net_device *dev, struct in6_addr *saddr,
	 * supress the inclusion of the sllao.
	 */
	if (send_sllao) {
		ifp = ipv6_get_ifaddr(saddr, dev, 1);
		struct inet6_ifaddr *ifp = ipv6_get_ifaddr(saddr, dev, 1);
		if (ifp) {
			if (ifp->flags & IFA_F_OPTIMISTIC)  {
				send_sllao = 0;
				in6_ifa_put(ifp);
			}
			in6_ifa_put(ifp);
		} else {
			send_sllao = 0;
		}