inet: Consolidate inetpeer_invalidate_tree() interfaces.
We only need one interface for this operation, since we always know which inetpeer root we want to flush. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c3426b4719
commit
56a6b248eb
@ -113,8 +113,7 @@ static inline struct inet_peer *inet_getpeer_v6(struct net *net,
|
|||||||
extern void inet_putpeer(struct inet_peer *p);
|
extern void inet_putpeer(struct inet_peer *p);
|
||||||
extern bool inet_peer_xrlim_allow(struct inet_peer *peer, int timeout);
|
extern bool inet_peer_xrlim_allow(struct inet_peer *peer, int timeout);
|
||||||
|
|
||||||
extern void __inetpeer_invalidate_tree(struct inet_peer_base *);
|
extern void inetpeer_invalidate_tree(struct inet_peer_base *);
|
||||||
extern void inetpeer_invalidate_tree(struct net *net, int family);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* temporary check to make sure we dont access rid, ip_id_count, tcp_ts,
|
* temporary check to make sure we dont access rid, ip_id_count, tcp_ts,
|
||||||
|
@ -564,7 +564,7 @@ static void inetpeer_inval_rcu(struct rcu_head *head)
|
|||||||
schedule_delayed_work(&gc_work, gc_delay);
|
schedule_delayed_work(&gc_work, gc_delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __inetpeer_invalidate_tree(struct inet_peer_base *base)
|
void inetpeer_invalidate_tree(struct inet_peer_base *base)
|
||||||
{
|
{
|
||||||
struct inet_peer *old, *new, *prev;
|
struct inet_peer *old, *new, *prev;
|
||||||
|
|
||||||
@ -585,12 +585,4 @@ void __inetpeer_invalidate_tree(struct inet_peer_base *base)
|
|||||||
out:
|
out:
|
||||||
write_sequnlock_bh(&base->lock);
|
write_sequnlock_bh(&base->lock);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__inetpeer_invalidate_tree);
|
|
||||||
|
|
||||||
void inetpeer_invalidate_tree(struct net *net, int family)
|
|
||||||
{
|
|
||||||
struct inet_peer_base *base = family_to_base(net, family);
|
|
||||||
|
|
||||||
__inetpeer_invalidate_tree(base);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(inetpeer_invalidate_tree);
|
EXPORT_SYMBOL(inetpeer_invalidate_tree);
|
||||||
|
@ -935,7 +935,7 @@ static void rt_cache_invalidate(struct net *net)
|
|||||||
|
|
||||||
get_random_bytes(&shuffle, sizeof(shuffle));
|
get_random_bytes(&shuffle, sizeof(shuffle));
|
||||||
atomic_add(shuffle + 1U, &net->ipv4.rt_genid);
|
atomic_add(shuffle + 1U, &net->ipv4.rt_genid);
|
||||||
inetpeer_invalidate_tree(net, AF_INET);
|
inetpeer_invalidate_tree(net->ipv4.peers);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3401,7 +3401,7 @@ static void __net_exit ipv4_inetpeer_exit(struct net *net)
|
|||||||
struct inet_peer_base *bp = net->ipv4.peers;
|
struct inet_peer_base *bp = net->ipv4.peers;
|
||||||
|
|
||||||
net->ipv4.peers = NULL;
|
net->ipv4.peers = NULL;
|
||||||
__inetpeer_invalidate_tree(bp);
|
inetpeer_invalidate_tree(bp);
|
||||||
kfree(bp);
|
kfree(bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3012,7 +3012,7 @@ static void __net_exit ipv6_inetpeer_exit(struct net *net)
|
|||||||
struct inet_peer_base *bp = net->ipv6.peers;
|
struct inet_peer_base *bp = net->ipv6.peers;
|
||||||
|
|
||||||
net->ipv6.peers = NULL;
|
net->ipv6.peers = NULL;
|
||||||
__inetpeer_invalidate_tree(bp);
|
inetpeer_invalidate_tree(bp);
|
||||||
kfree(bp);
|
kfree(bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user