On Thu, 2015-07-30 at 06:22 -0700, roopa wrote: > On 7/29/15, 10:42 PM, David Miller wrote: > > From: Roopa Prabhu <ro...@cumulusnetworks.com> > > Date: Tue, 28 Jul 2015 15:27:39 -0700 > > > > > v4 - v5: Use ipv6_stub_impl.ipv6_dst_lookup as suggested by Hannes > > I think this might not work. > > > > The ipv6_stub pointer is NULL until the ipv6 module is loaded. > > > > VXLAN can safely call through ipv6_stub->foo() because it _knows_ > > the > > ipv6 module has been loaded, and will not go away, because it is > > working with an ipv6 socket. > > > > You don't have that set of preconditions here, and thus it is pretty > > easy to generate a scenerio where ipv6_stub will be NULL at your > > call > > sites. > > v4 seems to be a better/safe option in that case. I can resubmit v4 if > that is acceptable. > > > > > This is starting to get really messy, to be honest. And we've been > > harboring this build failure for several days now. > > > please revert the commit that introduced the IPV6 dependency. I will > resubmit if needed. > I don't feel good about the build failure either. > > Thanks and apologies.
Of course you have to guard the NULL pointer dereference. Something simple like that will do: --- a/net/ipv6/addrconf_core.c +++ b/net/ipv6/addrconf_core.c @@ -107,7 +107,15 @@ int inet6addr_notifier_call_chain(unsigned long val, void *v) } EXPORT_SYMBOL(inet6addr_notifier_call_chain); -const struct ipv6_stub *ipv6_stub __read_mostly; +static int eafnosupport_ipv6_dst_lookup(struct sock *u1, struct dst_entry **u2, + struct flowi6 *u3) +{ + return -EAFNOSUPPORT; +} + +const struct ipv6_stub *ipv6_stub __read_mostly = &(struct ipv6_stub){ + .ipv6_dst_lookup = eafnosupport_ipv6_dst_lookup, +}; EXPORT_SYMBOL_GPL(ipv6_stub); /* IPv6 Wildcard Address and Loopback Address defined by RFC2553 */ Bye, Hannes -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html