Commit 32ac8e51 authored by Hideaki Yoshifuji's avatar Hideaki Yoshifuji Committed by David S. Miller

[IPV6]: Fix possible oops in ndisc_send_na.

parent 11a5d2b2
...@@ -431,23 +431,21 @@ static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh, ...@@ -431,23 +431,21 @@ static void ndisc_send_na(struct net_device *dev, struct neighbour *neigh,
len = sizeof(struct icmp6hdr) + sizeof(struct in6_addr); len = sizeof(struct icmp6hdr) + sizeof(struct in6_addr);
rt = ip6_dst_alloc();
if (!rt)
return;
/* for anycast or proxy, solicited_addr != src_addr */ /* for anycast or proxy, solicited_addr != src_addr */
ifp = ipv6_get_ifaddr(solicited_addr, dev); ifp = ipv6_get_ifaddr(solicited_addr, dev);
if (ifp) { if (ifp) {
src_addr = solicited_addr; src_addr = solicited_addr;
in6_ifa_put(ifp); in6_ifa_put(ifp);
} else { } else {
if (ipv6_dev_get_saddr(dev, daddr, &tmpaddr, 0)) { if (ipv6_dev_get_saddr(dev, daddr, &tmpaddr, 0))
dst_free(dst);
return; return;
}
src_addr = &tmpaddr; src_addr = &tmpaddr;
} }
rt = ip6_dst_alloc();
if (!rt)
return;
ndisc_flow_init(&fl, NDISC_NEIGHBOUR_ADVERTISEMENT, src_addr, daddr); ndisc_flow_init(&fl, NDISC_NEIGHBOUR_ADVERTISEMENT, src_addr, daddr);
ndisc_rt_init(rt, dev, neigh); ndisc_rt_init(rt, dev, neigh);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment