Loading net/ipv4/inetpeer.c +18 −9 Original line number Diff line number Diff line Loading @@ -79,15 +79,24 @@ static const struct inet_peer peer_fake_node = { .avl_height = 0 }; static struct inet_peer_base { struct inet_peer_base { struct inet_peer __rcu *root; spinlock_t lock; int total; } v4_peers = { }; static struct inet_peer_base v4_peers = { .root = peer_avl_empty_rcu, .lock = __SPIN_LOCK_UNLOCKED(v4_peers.lock), .total = 0, }; static struct inet_peer_base v6_peers = { .root = peer_avl_empty_rcu, .lock = __SPIN_LOCK_UNLOCKED(v6_peers.lock), .total = 0, }; #define PEER_MAXDEPTH 40 /* sufficient for about 2^27 nodes */ /* Exported for sysctl_net_ipv4. */ Loading Loading @@ -415,9 +424,14 @@ static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base *base) inet_putpeer(p); } static struct inet_peer_base *family_to_base(int family) { return (family == AF_INET ? &v4_peers : &v6_peers); } static struct inet_peer_base *peer_to_base(struct inet_peer *p) { return &v4_peers; return family_to_base(p->daddr.family); } /* May be called with local BH enabled. */ Loading Loading @@ -457,11 +471,6 @@ static int cleanup_once(unsigned long ttl) return 0; } static struct inet_peer_base *family_to_base(int family) { return &v4_peers; } /* Called with or without local BH being disabled. */ struct inet_peer *inet_getpeer(inet_peer_address_t *daddr, int create) { Loading Loading @@ -521,7 +530,7 @@ struct inet_peer *inet_getpeer(inet_peer_address_t *daddr, int create) static int compute_total(void) { return v4_peers.total; return v4_peers.total + v6_peers.total; } /* Called with local BH disabled. */ Loading Loading
net/ipv4/inetpeer.c +18 −9 Original line number Diff line number Diff line Loading @@ -79,15 +79,24 @@ static const struct inet_peer peer_fake_node = { .avl_height = 0 }; static struct inet_peer_base { struct inet_peer_base { struct inet_peer __rcu *root; spinlock_t lock; int total; } v4_peers = { }; static struct inet_peer_base v4_peers = { .root = peer_avl_empty_rcu, .lock = __SPIN_LOCK_UNLOCKED(v4_peers.lock), .total = 0, }; static struct inet_peer_base v6_peers = { .root = peer_avl_empty_rcu, .lock = __SPIN_LOCK_UNLOCKED(v6_peers.lock), .total = 0, }; #define PEER_MAXDEPTH 40 /* sufficient for about 2^27 nodes */ /* Exported for sysctl_net_ipv4. */ Loading Loading @@ -415,9 +424,14 @@ static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base *base) inet_putpeer(p); } static struct inet_peer_base *family_to_base(int family) { return (family == AF_INET ? &v4_peers : &v6_peers); } static struct inet_peer_base *peer_to_base(struct inet_peer *p) { return &v4_peers; return family_to_base(p->daddr.family); } /* May be called with local BH enabled. */ Loading Loading @@ -457,11 +471,6 @@ static int cleanup_once(unsigned long ttl) return 0; } static struct inet_peer_base *family_to_base(int family) { return &v4_peers; } /* Called with or without local BH being disabled. */ struct inet_peer *inet_getpeer(inet_peer_address_t *daddr, int create) { Loading Loading @@ -521,7 +530,7 @@ struct inet_peer *inet_getpeer(inet_peer_address_t *daddr, int create) static int compute_total(void) { return v4_peers.total; return v4_peers.total + v6_peers.total; } /* Called with local BH disabled. */ Loading