diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-10 18:05:28 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-10 18:05:28 -0700 |
commit | e044a651b9b7b1b33d8b7fdb2bb27e443f392083 (patch) | |
tree | 96901e4acad88432a7359bc5fc74c14782f6065b | |
parent | 061a5c316b6526dbc729049a16243ec27937cc31 (diff) | |
download | linux-e044a651b9b7b1b33d8b7fdb2bb27e443f392083.tar.bz2 |
ipv4: Fix crashes in fib_rules_tclass().
All paths assume, when CONFIG_IP_MULTIPLE_TABLES is enabled, that any
successful call to fib_lookup() will initialize the fib_result->r
value to something.
We violated that expectation in the new fib_lookup() fast path.
Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Tested-by: Eric Dumazet <eric.dumazet@gmail.com>
Tested-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/ip_fib.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index 539c6721f810..000c4674e18e 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h @@ -230,6 +230,7 @@ static inline int fib_lookup(struct net *net, struct flowi4 *flp, struct fib_result *res) { if (!net->ipv4.fib_has_custom_rules) { + res->r = NULL; if (net->ipv4.fib_local && !fib_table_lookup(net->ipv4.fib_local, flp, res, FIB_LOOKUP_NOREF)) |