Revert "ipv6: make ip6_rt_gc_expire an atomic_t"
This reverts commit 66b3025202
which is
commit 9cb7c013420f98fa6fd12fc6a5dc055170c108db upstream.
It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.
Bug: 161946584
Change-Id: Idad46376e176f54a1d6781bdb432131bed7844f2
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
fa82780056
commit
5826ec2af1
@ -78,8 +78,8 @@ struct netns_ipv6 {
|
|||||||
struct dst_ops ip6_dst_ops;
|
struct dst_ops ip6_dst_ops;
|
||||||
rwlock_t fib6_walker_lock;
|
rwlock_t fib6_walker_lock;
|
||||||
spinlock_t fib6_gc_lock;
|
spinlock_t fib6_gc_lock;
|
||||||
atomic_t ip6_rt_gc_expire;
|
unsigned int ip6_rt_gc_expire;
|
||||||
unsigned long ip6_rt_last_gc;
|
unsigned long ip6_rt_last_gc;
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
unsigned int fib6_rules_require_fldissect;
|
unsigned int fib6_rules_require_fldissect;
|
||||||
bool fib6_has_custom_rules;
|
bool fib6_has_custom_rules;
|
||||||
|
@ -3215,7 +3215,6 @@ static int ip6_dst_gc(struct dst_ops *ops)
|
|||||||
int rt_elasticity = net->ipv6.sysctl.ip6_rt_gc_elasticity;
|
int rt_elasticity = net->ipv6.sysctl.ip6_rt_gc_elasticity;
|
||||||
int rt_gc_timeout = net->ipv6.sysctl.ip6_rt_gc_timeout;
|
int rt_gc_timeout = net->ipv6.sysctl.ip6_rt_gc_timeout;
|
||||||
unsigned long rt_last_gc = net->ipv6.ip6_rt_last_gc;
|
unsigned long rt_last_gc = net->ipv6.ip6_rt_last_gc;
|
||||||
unsigned int val;
|
|
||||||
int entries;
|
int entries;
|
||||||
|
|
||||||
entries = dst_entries_get_fast(ops);
|
entries = dst_entries_get_fast(ops);
|
||||||
@ -3226,13 +3225,13 @@ static int ip6_dst_gc(struct dst_ops *ops)
|
|||||||
entries <= rt_max_size)
|
entries <= rt_max_size)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
fib6_run_gc(atomic_inc_return(&net->ipv6.ip6_rt_gc_expire), net, true);
|
net->ipv6.ip6_rt_gc_expire++;
|
||||||
|
fib6_run_gc(net->ipv6.ip6_rt_gc_expire, net, true);
|
||||||
entries = dst_entries_get_slow(ops);
|
entries = dst_entries_get_slow(ops);
|
||||||
if (entries < ops->gc_thresh)
|
if (entries < ops->gc_thresh)
|
||||||
atomic_set(&net->ipv6.ip6_rt_gc_expire, rt_gc_timeout >> 1);
|
net->ipv6.ip6_rt_gc_expire = rt_gc_timeout>>1;
|
||||||
out:
|
out:
|
||||||
val = atomic_read(&net->ipv6.ip6_rt_gc_expire);
|
net->ipv6.ip6_rt_gc_expire -= net->ipv6.ip6_rt_gc_expire>>rt_elasticity;
|
||||||
atomic_set(&net->ipv6.ip6_rt_gc_expire, val - (val >> rt_elasticity));
|
|
||||||
return entries > rt_max_size;
|
return entries > rt_max_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6288,7 +6287,7 @@ static int __net_init ip6_route_net_init(struct net *net)
|
|||||||
net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
|
net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
|
||||||
net->ipv6.sysctl.skip_notify_on_dev_down = 0;
|
net->ipv6.sysctl.skip_notify_on_dev_down = 0;
|
||||||
|
|
||||||
atomic_set(&net->ipv6.ip6_rt_gc_expire, 30*HZ);
|
net->ipv6.ip6_rt_gc_expire = 30*HZ;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
out:
|
out:
|
||||||
|
Loading…
Reference in New Issue
Block a user