Message ID | 20100621102508.2075d677@nehalam |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Mon, Jun 21, 2010 at 10:25:08AM -0700, Stephen Hemminger wrote: > It is not handling the case of ifp == NULL. > > Maybe the following (move the assignment into the if block). > > --- a/net/ipv6/ndisc.c 2010-06-21 10:22:20.825637690 -0700 > +++ b/net/ipv6/ndisc.c 2010-06-21 10:24:31.573011996 -0700 > @@ -586,6 +586,7 @@ static void ndisc_send_na(struct net_dev > src_addr = solicited_addr; > if (ifp->flags & IFA_F_OPTIMISTIC) > override = 0; > + inc_opt |= ifp->idev->cnf.force_tllao; > in6_ifa_put(ifp); > } else { > if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr, > @@ -599,7 +600,6 @@ static void ndisc_send_na(struct net_dev > icmp6h.icmp6_solicited = solicited; > icmp6h.icmp6_override = override; > > - inc_opt |= ifp->idev->cnf.force_tllao; > __ndisc_send(dev, neigh, daddr, src_addr, > &icmp6h, solicited_addr, > inc_opt ? ND_OPT_TARGET_LL_ADDR : 0); > > > Thanks a lot! This fix seems to work fine for me (tested locally only). I'll see what happens when I apply it to my server tomorrow. Curious though as to why I wasn't able to reproduce it when compiling the kernel with Gentoo's GCC. It doesn't look like it should make any difference. Maybe I made a mistake when I tested it with Gentoo. Regards Andreas Klauer -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Jun 21, 2010 at 10:04:13PM +0200, Andreas Klauer wrote: > Thanks a lot! This fix seems to work fine for me (tested locally only). > I'll see what happens when I apply it to my server tomorrow. The fix also works for my server. Thank you Andreas Klauer -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- a/net/ipv6/ndisc.c 2010-06-21 10:22:20.825637690 -0700 +++ b/net/ipv6/ndisc.c 2010-06-21 10:24:31.573011996 -0700 @@ -586,6 +586,7 @@ static void ndisc_send_na(struct net_dev src_addr = solicited_addr; if (ifp->flags & IFA_F_OPTIMISTIC) override = 0; + inc_opt |= ifp->idev->cnf.force_tllao; in6_ifa_put(ifp); } else { if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr, @@ -599,7 +600,6 @@ static void ndisc_send_na(struct net_dev icmp6h.icmp6_solicited = solicited; icmp6h.icmp6_override = override; - inc_opt |= ifp->idev->cnf.force_tllao; __ndisc_send(dev, neigh, daddr, src_addr, &icmp6h, solicited_addr, inc_opt ? ND_OPT_TARGET_LL_ADDR : 0);