diff options
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | net/ipv6/route.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index ab12b816ab94..96f1621e2381 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -470,10 +470,10 @@ void fib6_select_path(const struct net *net, struct fib6_result *res,  		goto out;  	hash = fl6->mp_hash; -	if (hash <= atomic_read(&first->fib6_nh->fib_nh_upper_bound) && -	    rt6_score_route(first->fib6_nh, first->fib6_flags, oif, -			    strict) >= 0) { -		match = first; +	if (hash <= atomic_read(&first->fib6_nh->fib_nh_upper_bound)) { +		if (rt6_score_route(first->fib6_nh, first->fib6_flags, oif, +				    strict) >= 0) +			match = first;  		goto out;  	} @@ -1771,6 +1771,7 @@ out:  	if (!err) {  		spin_lock_bh(&f6i->fib6_table->tb6_lock);  		fib6_update_sernum(net, f6i); +		fib6_add_gc_list(f6i);  		spin_unlock_bh(&f6i->fib6_table->tb6_lock);  		fib6_force_start_gc(net);  	}  | 
