From ca043569390c528de4cd5ec9e07502f2bf4ecd1f Mon Sep 17 00:00:00 2001 From: YOSHIFUJI Hideaki Date: Wed, 28 Feb 2007 23:13:20 +0900 Subject: [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: YOSHIFUJI Hideaki Signed-off-by: David S. Miller --- net/ipv6/ndisc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'net/ipv6') diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index b79b00042310..053147a0027e 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c @@ -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); + send_sllao = 0; } + in6_ifa_put(ifp); } else { send_sllao = 0; } -- cgit v1.2.3-59-g8ed1b