On 21/02/18 21:00, David Ahern wrote: > The result of the skb flow dissect is copied from keys to hash_keys to > ensure only the intended data is hashed. The original L4 hash patch > overlooked setting the addr_type for this case; add it. > > Fixes: bf4e0a3db97eb ("net: ipv4: add support for ECMP hash policy choice") > Reported-by: Ido Schimmel <ido...@idosch.org> > Signed-off-by: David Ahern <dsah...@gmail.com> > --- > net/ipv4/route.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/net/ipv4/route.c b/net/ipv4/route.c > index 49cc1c1df1ba..a4f44d815a61 100644 > --- a/net/ipv4/route.c > +++ b/net/ipv4/route.c > @@ -1826,6 +1826,8 @@ int fib_multipath_hash(const struct fib_info *fi, const > struct flowi4 *fl4, > return skb_get_hash_raw(skb) >> 1; > memset(&hash_keys, 0, sizeof(hash_keys)); > skb_flow_dissect_flow_keys(skb, &keys, flag); > + > + hash_keys.control.addr_type = > FLOW_DISSECTOR_KEY_IPV4_ADDRS; > hash_keys.addrs.v4addrs.src = keys.addrs.v4addrs.src; > hash_keys.addrs.v4addrs.dst = keys.addrs.v4addrs.dst; > hash_keys.ports.src = keys.ports.src; >
Good catch, Acked-by: Nikolay Aleksandrov <niko...@cumulusnetworks.com>