mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 04:12:04 -04:00
Revert "net: xfrm: Localize sequence counter per network namespace"
This reverts commit a128e07b47 which is
commit e88add19f68191448427a6e4eb059664650a837f upstream as it messes
with the ABI.
Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Idec3dc7069be58d939ac919f6ac2206ee63d0ed2
This commit is contained in:
parent
f6865f9c47
commit
25acaded2f
2 changed files with 6 additions and 8 deletions
|
|
@ -72,9 +72,7 @@ struct netns_xfrm {
|
|||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
struct dst_ops xfrm6_dst_ops;
|
||||
#endif
|
||||
spinlock_t xfrm_state_lock;
|
||||
seqcount_t xfrm_state_hash_generation;
|
||||
|
||||
spinlock_t xfrm_state_lock;
|
||||
spinlock_t xfrm_policy_lock;
|
||||
struct mutex xfrm_cfg_mutex;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ static void xfrm_state_gc_task(struct work_struct *work);
|
|||
*/
|
||||
|
||||
static unsigned int xfrm_state_hashmax __read_mostly = 1 * 1024 * 1024;
|
||||
static __read_mostly seqcount_t xfrm_state_hash_generation = SEQCNT_ZERO(xfrm_state_hash_generation);
|
||||
static struct kmem_cache *xfrm_state_cache __ro_after_init;
|
||||
|
||||
static DECLARE_WORK(xfrm_state_gc_work, xfrm_state_gc_task);
|
||||
|
|
@ -139,7 +140,7 @@ static void xfrm_hash_resize(struct work_struct *work)
|
|||
}
|
||||
|
||||
spin_lock_bh(&net->xfrm.xfrm_state_lock);
|
||||
write_seqcount_begin(&net->xfrm.xfrm_state_hash_generation);
|
||||
write_seqcount_begin(&xfrm_state_hash_generation);
|
||||
|
||||
nhashmask = (nsize / sizeof(struct hlist_head)) - 1U;
|
||||
odst = xfrm_state_deref_prot(net->xfrm.state_bydst, net);
|
||||
|
|
@ -155,7 +156,7 @@ static void xfrm_hash_resize(struct work_struct *work)
|
|||
rcu_assign_pointer(net->xfrm.state_byspi, nspi);
|
||||
net->xfrm.state_hmask = nhashmask;
|
||||
|
||||
write_seqcount_end(&net->xfrm.xfrm_state_hash_generation);
|
||||
write_seqcount_end(&xfrm_state_hash_generation);
|
||||
spin_unlock_bh(&net->xfrm.xfrm_state_lock);
|
||||
|
||||
osize = (ohashmask + 1) * sizeof(struct hlist_head);
|
||||
|
|
@ -1057,7 +1058,7 @@ xfrm_state_find(const xfrm_address_t *daddr, const xfrm_address_t *saddr,
|
|||
|
||||
to_put = NULL;
|
||||
|
||||
sequence = read_seqcount_begin(&net->xfrm.xfrm_state_hash_generation);
|
||||
sequence = read_seqcount_begin(&xfrm_state_hash_generation);
|
||||
|
||||
rcu_read_lock();
|
||||
h = xfrm_dst_hash(net, daddr, saddr, tmpl->reqid, encap_family);
|
||||
|
|
@ -1170,7 +1171,7 @@ out:
|
|||
if (to_put)
|
||||
xfrm_state_put(to_put);
|
||||
|
||||
if (read_seqcount_retry(&net->xfrm.xfrm_state_hash_generation, sequence)) {
|
||||
if (read_seqcount_retry(&xfrm_state_hash_generation, sequence)) {
|
||||
*err = -EAGAIN;
|
||||
if (x) {
|
||||
xfrm_state_put(x);
|
||||
|
|
@ -2661,7 +2662,6 @@ int __net_init xfrm_state_init(struct net *net)
|
|||
net->xfrm.state_num = 0;
|
||||
INIT_WORK(&net->xfrm.state_hash_work, xfrm_hash_resize);
|
||||
spin_lock_init(&net->xfrm.xfrm_state_lock);
|
||||
seqcount_init(&net->xfrm.xfrm_state_hash_generation);
|
||||
return 0;
|
||||
|
||||
out_byspi:
|
||||
|
|
|
|||
Loading…
Reference in a new issue