On 5/24/17 1:33 PM, Rosen, Rami wrote: > Hi, Rupa /David Ahern, > > First, thanks for this patch set! > > Second, it seems to me that something might be incorrect here. > > You have these additions in this patch (1/8): > ... > +struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 > *flp, > + const struct sk_buff *skb, > + struct fib_result *res); > ... > +struct rtable *ip_route_output_key_hash(struct net *net, struct flowi4 *fl4, > + const struct sk_buff *skb) > +{ > + struct fib_result res; > + struct rtable *rth; > + > + res.tclassid = 0; > + res.fi = NULL; > + res.table = NULL; > + > + rcu_read_lock(); > + rth = ip_route_output_key_hash_rcu(net, fl4, &res, mp_hash); > rcu_read_unlock(); > + > return rth; > } > -EXPORT_SYMBOL_GPL(__ip_route_output_key_hash); > +EXPORT_SYMBOL_GPL(ip_route_output_key_hash); > > > So the third parameter to ip_route_output_key_hash_rcu() should be skb*, and > the fourth parameter should be fib_result *. However, you do not pass the skb > parameter > when calling ip_route_output_key_hash_rcu() in > ip_route_output_key_hash() (in fact you don't use it at all), and you pass > mp_hash as the fourth parameter.
Yep, it's a problem with the forward port of the first round of patches. Roopa: in include/net/route.h, __ip_route_output_key_hash should be removed as well.