diff options
author | Arnaldo Carvalho de Melo <acme@ghostprotocols.net> | 2005-08-09 22:45:38 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-08-29 18:37:29 -0400 |
commit | e6848976b721eeb5551cd94673faafeef78d9f35 (patch) | |
tree | 6c78b0eb52614ff6386b603ca64091b5aefaa418 /net/ipv6/af_inet6.c | |
parent | d13964f4490157b8a290903362bfbc54f750a6bc (diff) |
[NET]: Cleanup INET_REFCNT_DEBUG code
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/af_inet6.c')
-rw-r--r-- | net/ipv6/af_inet6.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 574047353628..7df2ccb380d9 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -86,26 +86,12 @@ extern void if6_proc_exit(void); | |||
86 | 86 | ||
87 | int sysctl_ipv6_bindv6only; | 87 | int sysctl_ipv6_bindv6only; |
88 | 88 | ||
89 | #ifdef INET_REFCNT_DEBUG | ||
90 | atomic_t inet6_sock_nr; | ||
91 | EXPORT_SYMBOL(inet6_sock_nr); | ||
92 | #endif | ||
93 | |||
94 | /* The inetsw table contains everything that inet_create needs to | 89 | /* The inetsw table contains everything that inet_create needs to |
95 | * build a new socket. | 90 | * build a new socket. |
96 | */ | 91 | */ |
97 | static struct list_head inetsw6[SOCK_MAX]; | 92 | static struct list_head inetsw6[SOCK_MAX]; |
98 | static DEFINE_SPINLOCK(inetsw6_lock); | 93 | static DEFINE_SPINLOCK(inetsw6_lock); |
99 | 94 | ||
100 | static void inet6_sock_destruct(struct sock *sk) | ||
101 | { | ||
102 | inet_sock_destruct(sk); | ||
103 | |||
104 | #ifdef INET_REFCNT_DEBUG | ||
105 | atomic_dec(&inet6_sock_nr); | ||
106 | #endif | ||
107 | } | ||
108 | |||
109 | static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) | 95 | static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) |
110 | { | 96 | { |
111 | const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo); | 97 | const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo); |
@@ -186,7 +172,7 @@ static int inet6_create(struct socket *sock, int protocol) | |||
186 | inet->hdrincl = 1; | 172 | inet->hdrincl = 1; |
187 | } | 173 | } |
188 | 174 | ||
189 | sk->sk_destruct = inet6_sock_destruct; | 175 | sk->sk_destruct = inet_sock_destruct; |
190 | sk->sk_family = PF_INET6; | 176 | sk->sk_family = PF_INET6; |
191 | sk->sk_protocol = protocol; | 177 | sk->sk_protocol = protocol; |
192 | 178 | ||
@@ -213,12 +199,17 @@ static int inet6_create(struct socket *sock, int protocol) | |||
213 | inet->pmtudisc = IP_PMTUDISC_DONT; | 199 | inet->pmtudisc = IP_PMTUDISC_DONT; |
214 | else | 200 | else |
215 | inet->pmtudisc = IP_PMTUDISC_WANT; | 201 | inet->pmtudisc = IP_PMTUDISC_WANT; |
202 | /* | ||
203 | * Increment only the relevant sk_prot->socks debug field, this changes | ||
204 | * the previous behaviour of incrementing both the equivalent to | ||
205 | * answer->prot->socks (inet6_sock_nr) and inet_sock_nr. | ||
206 | * | ||
207 | * This allows better debug granularity as we'll know exactly how many | ||
208 | * UDPv6, TCPv6, etc socks were allocated, not the sum of all IPv6 | ||
209 | * transport protocol socks. -acme | ||
210 | */ | ||
211 | sk_refcnt_debug_inc(sk); | ||
216 | 212 | ||
217 | |||
218 | #ifdef INET_REFCNT_DEBUG | ||
219 | atomic_inc(&inet6_sock_nr); | ||
220 | atomic_inc(&inet_sock_nr); | ||
221 | #endif | ||
222 | if (inet->num) { | 213 | if (inet->num) { |
223 | /* It assumes that any protocol which allows | 214 | /* It assumes that any protocol which allows |
224 | * the user to assign a number at socket | 215 | * the user to assign a number at socket |