Index: linux/net/ipv6/addrconf.c =================================================================== --- linux.orig/net/ipv6/addrconf.c 2007-07-11 14:40:20.558781826 +0200 +++ linux/net/ipv6/addrconf.c 2007-07-11 14:40:43.800106274 +0200 @@ -1120,7 +1120,11 @@ int ipv6_get_saddr(struct dst_entry *dst, struct in6_addr *daddr, struct in6_addr *saddr) { - return ipv6_dev_get_saddr(dst ? ip6_dst_idev(dst)->dev : NULL, daddr, saddr); + /* Temporary addition before finding the bug --arno */ + struct inet6_dev *idev = dst? ip6_dst_idev(dst) : NULL; + struct net_device *dev = idev? idev->dev : NULL; + + return ipv6_dev_get_saddr(dev, daddr, saddr); } Index: linux/net/ipv6/route.c =================================================================== --- linux.orig/net/ipv6/route.c 2007-07-11 14:40:02.037726371 +0200 +++ linux/net/ipv6/route.c 2007-07-11 14:40:43.880110833 +0200 @@ -575,6 +575,9 @@ struct fib6_table *table; table = rt->rt6i_table; + /* Temporary addition before finding the bug --arno */ + if (!table) + return NULL; write_lock_bh(&table->tb6_lock); err = fib6_add(&table->tb6_root, rt, info); write_unlock_bh(&table->tb6_lock);