aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/inet_hashtables.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/inet_hashtables.h')
-rw-r--r--include/net/inet_hashtables.h29
1 files changed, 3 insertions, 26 deletions
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index 37f6cb112127..982d487751f9 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -264,37 +264,14 @@ static inline void inet_listen_unlock(struct inet_hashinfo *hashinfo)
264 wake_up(&hashinfo->lhash_wait); 264 wake_up(&hashinfo->lhash_wait);
265} 265}
266 266
267static inline void __inet_hash(struct inet_hashinfo *hashinfo, 267extern void __inet_hash(struct inet_hashinfo *hashinfo, struct sock *sk);
268 struct sock *sk, const int listen_possible) 268extern void __inet_hash_nolisten(struct inet_hashinfo *hinfo, struct sock *sk);
269{
270 struct hlist_head *list;
271 rwlock_t *lock;
272
273 BUG_TRAP(sk_unhashed(sk));
274 if (listen_possible && sk->sk_state == TCP_LISTEN) {
275 list = &hashinfo->listening_hash[inet_sk_listen_hashfn(sk)];
276 lock = &hashinfo->lhash_lock;
277 inet_listen_wlock(hashinfo);
278 } else {
279 struct inet_ehash_bucket *head;
280 sk->sk_hash = inet_sk_ehashfn(sk);
281 head = inet_ehash_bucket(hashinfo, sk->sk_hash);
282 list = &head->chain;
283 lock = inet_ehash_lockp(hashinfo, sk->sk_hash);
284 write_lock(lock);
285 }
286 __sk_add_node(sk, list);
287 sock_prot_inc_use(sk->sk_prot);
288 write_unlock(lock);
289 if (listen_possible && sk->sk_state == TCP_LISTEN)
290 wake_up(&hashinfo->lhash_wait);
291}
292 269
293static inline void inet_hash(struct inet_hashinfo *hashinfo, struct sock *sk) 270static inline void inet_hash(struct inet_hashinfo *hashinfo, struct sock *sk)
294{ 271{
295 if (sk->sk_state != TCP_CLOSE) { 272 if (sk->sk_state != TCP_CLOSE) {
296 local_bh_disable(); 273 local_bh_disable();
297 __inet_hash(hashinfo, sk, 1); 274 __inet_hash(hashinfo, sk);
298 local_bh_enable(); 275 local_bh_enable();
299 } 276 }
300} 277}