diff options
Diffstat (limited to 'net/ipv4/fib_frontend.c')
| -rw-r--r-- | net/ipv4/fib_frontend.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index eb6f69a8f27..c19c1f739fb 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -163,13 +163,19 @@ struct net_device *__ip_dev_find(struct net *net, __be32 addr, bool devref)  				.daddr = addr  			}  		}, -		.flags = FLOWI_FLAG_MATCH_ANY_IIF  	};  	struct fib_result res = { 0 };  	struct net_device *dev = NULL; +	struct fib_table *local_table; + +#ifdef CONFIG_IP_MULTIPLE_TABLES +	res.r = NULL; +#endif  	rcu_read_lock(); -	if (fib_lookup(net, &fl, &res)) { +	local_table = fib_get_table(net, RT_TABLE_LOCAL); +	if (!local_table || +	    fib_table_lookup(local_table, &fl, &res, FIB_LOOKUP_NOREF)) {  		rcu_read_unlock();  		return NULL;  	}  |