diff options
| -rw-r--r-- | include/net/inet_timewait_sock.h | 1 | ||||
| -rw-r--r-- | include/net/timewait_sock.h | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index 6d14c22a00c5..5f48748fe017 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h | |||
| @@ -196,6 +196,7 @@ static inline void inet_twsk_put(struct inet_timewait_sock *tw) | |||
| 196 | { | 196 | { |
| 197 | if (atomic_dec_and_test(&tw->tw_refcnt)) { | 197 | if (atomic_dec_and_test(&tw->tw_refcnt)) { |
| 198 | struct module *owner = tw->tw_prot->owner; | 198 | struct module *owner = tw->tw_prot->owner; |
| 199 | twsk_destructor((struct sock *)tw); | ||
| 199 | #ifdef SOCK_REFCNT_DEBUG | 200 | #ifdef SOCK_REFCNT_DEBUG |
| 200 | printk(KERN_DEBUG "%s timewait_sock %p released\n", | 201 | printk(KERN_DEBUG "%s timewait_sock %p released\n", |
| 201 | tw->tw_prot->name, tw); | 202 | tw->tw_prot->name, tw); |
diff --git a/include/net/timewait_sock.h b/include/net/timewait_sock.h index 2544281e1d5e..be293d795e38 100644 --- a/include/net/timewait_sock.h +++ b/include/net/timewait_sock.h | |||
| @@ -19,6 +19,7 @@ struct timewait_sock_ops { | |||
| 19 | unsigned int twsk_obj_size; | 19 | unsigned int twsk_obj_size; |
| 20 | int (*twsk_unique)(struct sock *sk, | 20 | int (*twsk_unique)(struct sock *sk, |
| 21 | struct sock *sktw, void *twp); | 21 | struct sock *sktw, void *twp); |
| 22 | void (*twsk_destructor)(struct sock *sk); | ||
| 22 | }; | 23 | }; |
| 23 | 24 | ||
| 24 | static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) | 25 | static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) |
| @@ -28,4 +29,10 @@ static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp) | |||
| 28 | return 0; | 29 | return 0; |
| 29 | } | 30 | } |
| 30 | 31 | ||
| 32 | static inline void twsk_destructor(struct sock *sk) | ||
| 33 | { | ||
| 34 | if (sk->sk_prot->twsk_prot->twsk_destructor != NULL) | ||
| 35 | sk->sk_prot->twsk_prot->twsk_destructor(sk); | ||
| 36 | } | ||
| 37 | |||
| 31 | #endif /* _TIMEWAIT_SOCK_H */ | 38 | #endif /* _TIMEWAIT_SOCK_H */ |
