net: ipv4: Fix NULL pointer dereference in route lookup
authorIdo Schimmel <idosch@mellanox.com>
Fri, 1 Mar 2019 13:38:43 +0000 (13:38 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 2 Mar 2019 08:41:53 +0000 (00:41 -0800)
When calculating the multipath hash for input routes the flow info is
not available and therefore should not be used.

Fixes: 24ba14406c5c ("route: Add multipath_hash in flowi_common to make user-define hash")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Cc: wenxu <wenxu@ucloud.cn>
Acked-by: wenxu <wenxu@ucloud.cn>
Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c

index 7cf4c83050710514b08f393557c0bc29870dcdfe..e3ac458b5d8be26af72a313225bcf1cef00fb605 100644 (file)
@@ -1820,7 +1820,7 @@ out:
 int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
                       const struct sk_buff *skb, struct flow_keys *flkeys)
 {
-       u32 multipath_hash = fl4->flowi4_multipath_hash;
+       u32 multipath_hash = fl4 ? fl4->flowi4_multipath_hash : 0;
        struct flow_keys hash_keys;
        u32 mhash;