summaryrefslogtreecommitdiffstats
path: root/include/net/inet_timewait_sock.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@starflyer.(none)>2005-10-20 18:21:33 +1000
committerDave Airlie <airlied@linux.ie>2005-10-20 18:21:33 +1000
commit312f5726055534be1dc9dd369be13aabd2943fcb (patch)
tree29394a3f83b4952a73b36a4aa962dfeda839e9db /include/net/inet_timewait_sock.h
parent3d5efad953c6d5ba11d5bcb584ef8e906f953a73 (diff)
parent93918e9afc76717176e9e114e79cdbb602a45ae8 (diff)
downloadop-kernel-dev-312f5726055534be1dc9dd369be13aabd2943fcb.zip
op-kernel-dev-312f5726055534be1dc9dd369be13aabd2943fcb.tar.gz
merge Linus head tree into my drm tree and fix up conflicts
Diffstat (limited to 'include/net/inet_timewait_sock.h')
-rw-r--r--include/net/inet_timewait_sock.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h
index 3b07035..28f7b21 100644
--- a/include/net/inet_timewait_sock.h
+++ b/include/net/inet_timewait_sock.h
@@ -19,6 +19,7 @@
#include <linux/ip.h>
#include <linux/list.h>
+#include <linux/module.h>
#include <linux/timer.h>
#include <linux/types.h>
#include <linux/workqueue.h>
@@ -112,6 +113,7 @@ struct inet_timewait_sock {
#define tw_node __tw_common.skc_node
#define tw_bind_node __tw_common.skc_bind_node
#define tw_refcnt __tw_common.skc_refcnt
+#define tw_hash __tw_common.skc_hash
#define tw_prot __tw_common.skc_prot
volatile unsigned char tw_substate;
/* 3 bits hole, try to pack */
@@ -126,7 +128,6 @@ struct inet_timewait_sock {
/* And these are ours. */
__u8 tw_ipv6only:1;
/* 31 bits hole, try to pack */
- int tw_hashent;
int tw_timeout;
unsigned long tw_ttd;
struct inet_bind_bucket *tw_tb;
@@ -193,11 +194,13 @@ static inline u32 inet_rcv_saddr(const struct sock *sk)
static inline void inet_twsk_put(struct inet_timewait_sock *tw)
{
if (atomic_dec_and_test(&tw->tw_refcnt)) {
+ struct module *owner = tw->tw_prot->owner;
#ifdef SOCK_REFCNT_DEBUG
printk(KERN_DEBUG "%s timewait_sock %p released\n",
tw->tw_prot->name, tw);
#endif
kmem_cache_free(tw->tw_prot->twsk_slab, tw);
+ module_put(owner);
}
}
OpenPOWER on IntegriCloud