diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 58e36ed88f25..10a9b3ae3442 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -113,9 +113,9 @@ static __inline__ void __tcp_inherit_port(struct sock *sk, struct sock *child) | |||
113 | struct inet_bind_bucket *tb; | 113 | struct inet_bind_bucket *tb; |
114 | 114 | ||
115 | spin_lock(&head->lock); | 115 | spin_lock(&head->lock); |
116 | tb = tcp_sk(sk)->bind_hash; | 116 | tb = inet_sk(sk)->bind_hash; |
117 | sk_add_bind_node(child, &tb->owners); | 117 | sk_add_bind_node(child, &tb->owners); |
118 | tcp_sk(child)->bind_hash = tb; | 118 | inet_sk(child)->bind_hash = tb; |
119 | spin_unlock(&head->lock); | 119 | spin_unlock(&head->lock); |
120 | } | 120 | } |
121 | 121 | ||
@@ -129,9 +129,10 @@ inline void tcp_inherit_port(struct sock *sk, struct sock *child) | |||
129 | void tcp_bind_hash(struct sock *sk, struct inet_bind_bucket *tb, | 129 | void tcp_bind_hash(struct sock *sk, struct inet_bind_bucket *tb, |
130 | const unsigned short snum) | 130 | const unsigned short snum) |
131 | { | 131 | { |
132 | inet_sk(sk)->num = snum; | 132 | struct inet_sock *inet = inet_sk(sk); |
133 | inet->num = snum; | ||
133 | sk_add_bind_node(sk, &tb->owners); | 134 | sk_add_bind_node(sk, &tb->owners); |
134 | tcp_sk(sk)->bind_hash = tb; | 135 | inet->bind_hash = tb; |
135 | } | 136 | } |
136 | 137 | ||
137 | static inline int tcp_bind_conflict(struct sock *sk, struct inet_bind_bucket *tb) | 138 | static inline int tcp_bind_conflict(struct sock *sk, struct inet_bind_bucket *tb) |
@@ -246,9 +247,9 @@ tb_not_found: | |||
246 | (!sk->sk_reuse || sk->sk_state == TCP_LISTEN)) | 247 | (!sk->sk_reuse || sk->sk_state == TCP_LISTEN)) |
247 | tb->fastreuse = 0; | 248 | tb->fastreuse = 0; |
248 | success: | 249 | success: |
249 | if (!tcp_sk(sk)->bind_hash) | 250 | if (!inet_sk(sk)->bind_hash) |
250 | tcp_bind_hash(sk, tb, snum); | 251 | tcp_bind_hash(sk, tb, snum); |
251 | BUG_TRAP(tcp_sk(sk)->bind_hash == tb); | 252 | BUG_TRAP(inet_sk(sk)->bind_hash == tb); |
252 | ret = 0; | 253 | ret = 0; |
253 | 254 | ||
254 | fail_unlock: | 255 | fail_unlock: |
@@ -269,9 +270,9 @@ static void __tcp_put_port(struct sock *sk) | |||
269 | struct inet_bind_bucket *tb; | 270 | struct inet_bind_bucket *tb; |
270 | 271 | ||
271 | spin_lock(&head->lock); | 272 | spin_lock(&head->lock); |
272 | tb = tcp_sk(sk)->bind_hash; | 273 | tb = inet->bind_hash; |
273 | __sk_del_bind_node(sk); | 274 | __sk_del_bind_node(sk); |
274 | tcp_sk(sk)->bind_hash = NULL; | 275 | inet->bind_hash = NULL; |
275 | inet->num = 0; | 276 | inet->num = 0; |
276 | inet_bind_bucket_destroy(tcp_bucket_cachep, tb); | 277 | inet_bind_bucket_destroy(tcp_bucket_cachep, tb); |
277 | spin_unlock(&head->lock); | 278 | spin_unlock(&head->lock); |
@@ -694,7 +695,7 @@ ok: | |||
694 | } | 695 | } |
695 | 696 | ||
696 | head = &tcp_bhash[inet_bhashfn(snum, tcp_bhash_size)]; | 697 | head = &tcp_bhash[inet_bhashfn(snum, tcp_bhash_size)]; |
697 | tb = tcp_sk(sk)->bind_hash; | 698 | tb = inet_sk(sk)->bind_hash; |
698 | spin_lock_bh(&head->lock); | 699 | spin_lock_bh(&head->lock); |
699 | if (sk_head(&tb->owners) == sk && !sk->sk_bind_node.next) { | 700 | if (sk_head(&tb->owners) == sk && !sk->sk_bind_node.next) { |
700 | __tcp_v4_hash(sk, 0); | 701 | __tcp_v4_hash(sk, 0); |
@@ -1940,7 +1941,7 @@ int tcp_v4_destroy_sock(struct sock *sk) | |||
1940 | __skb_queue_purge(&tp->ucopy.prequeue); | 1941 | __skb_queue_purge(&tp->ucopy.prequeue); |
1941 | 1942 | ||
1942 | /* Clean up a referenced TCP bind bucket. */ | 1943 | /* Clean up a referenced TCP bind bucket. */ |
1943 | if (tp->bind_hash) | 1944 | if (inet_sk(sk)->bind_hash) |
1944 | tcp_put_port(sk); | 1945 | tcp_put_port(sk); |
1945 | 1946 | ||
1946 | /* | 1947 | /* |