Skip to content

Commit 77a6a47

Browse files
edumazetdavem330
authored andcommitted
ipv6: get rid of __inet6_hash()
We can now use inet_hash() and __inet_hash() instead of private functions. Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent d1e559d commit 77a6a47

File tree

6 files changed

+12
-75
lines changed

6 files changed

+12
-75
lines changed

include/net/inet6_hashtables.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ static inline unsigned int __inet6_ehashfn(const u32 lhash,
3838
return jhash_3words(lhash, fhash, ports, initval);
3939
}
4040

41-
int __inet6_hash(struct sock *sk, struct inet_timewait_sock *twp);
42-
4341
/*
4442
* Sockets in TCP_CLOSE state are _always_ taken out of the hash, so
4543
* we need not check it for TCP lookups anymore, thanks Alexey. -DaveM

include/net/inet_hashtables.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ void inet_put_port(struct sock *sk);
249249
void inet_hashinfo_init(struct inet_hashinfo *h);
250250

251251
int __inet_hash_nolisten(struct sock *sk, struct inet_timewait_sock *tw);
252+
int __inet_hash(struct sock *sk, struct inet_timewait_sock *tw);
252253
void inet_hash(struct sock *sk);
253254
void inet_unhash(struct sock *sk);
254255

net/dccp/ipv6.c

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,6 @@
4040
static const struct inet_connection_sock_af_ops dccp_ipv6_mapped;
4141
static const struct inet_connection_sock_af_ops dccp_ipv6_af_ops;
4242

43-
static void dccp_v6_hash(struct sock *sk)
44-
{
45-
if (sk->sk_state != DCCP_CLOSED) {
46-
if (inet_csk(sk)->icsk_af_ops == &dccp_ipv6_mapped) {
47-
inet_hash(sk);
48-
return;
49-
}
50-
local_bh_disable();
51-
__inet6_hash(sk, NULL);
52-
local_bh_enable();
53-
}
54-
}
55-
5643
/* add pseudo-header to DCCP checksum stored in skb->csum */
5744
static inline __sum16 dccp_v6_csum_finish(struct sk_buff *skb,
5845
const struct in6_addr *saddr,
@@ -588,7 +575,7 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
588575
dccp_done(newsk);
589576
goto out;
590577
}
591-
__inet6_hash(newsk, NULL);
578+
__inet_hash(newsk, NULL);
592579

593580
return newsk;
594581

@@ -1056,7 +1043,7 @@ static struct proto dccp_v6_prot = {
10561043
.sendmsg = dccp_sendmsg,
10571044
.recvmsg = dccp_recvmsg,
10581045
.backlog_rcv = dccp_v6_do_rcv,
1059-
.hash = dccp_v6_hash,
1046+
.hash = inet_hash,
10601047
.unhash = inet_unhash,
10611048
.accept = inet_csk_accept,
10621049
.get_port = inet_csk_get_port,

net/ipv4/inet_hashtables.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -434,15 +434,13 @@ int __inet_hash_nolisten(struct sock *sk, struct inet_timewait_sock *tw)
434434
}
435435
EXPORT_SYMBOL_GPL(__inet_hash_nolisten);
436436

437-
static void __inet_hash(struct sock *sk)
437+
int __inet_hash(struct sock *sk, struct inet_timewait_sock *tw)
438438
{
439439
struct inet_hashinfo *hashinfo = sk->sk_prot->h.hashinfo;
440440
struct inet_listen_hashbucket *ilb;
441441

442-
if (sk->sk_state != TCP_LISTEN) {
443-
__inet_hash_nolisten(sk, NULL);
444-
return;
445-
}
442+
if (sk->sk_state != TCP_LISTEN)
443+
return __inet_hash_nolisten(sk, tw);
446444

447445
WARN_ON(!sk_unhashed(sk));
448446
ilb = &hashinfo->listening_hash[inet_sk_listen_hashfn(sk)];
@@ -451,13 +449,15 @@ static void __inet_hash(struct sock *sk)
451449
__sk_nulls_add_node_rcu(sk, &ilb->head);
452450
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
453451
spin_unlock(&ilb->lock);
452+
return 0;
454453
}
454+
EXPORT_SYMBOL(__inet_hash);
455455

456456
void inet_hash(struct sock *sk)
457457
{
458458
if (sk->sk_state != TCP_CLOSE) {
459459
local_bh_disable();
460-
__inet_hash(sk);
460+
__inet_hash(sk, NULL);
461461
local_bh_enable();
462462
}
463463
}

net/ipv6/inet6_hashtables.c

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -42,42 +42,6 @@ u32 inet6_ehashfn(const struct net *net,
4242
inet6_ehash_secret + net_hash_mix(net));
4343
}
4444

45-
int __inet6_hash(struct sock *sk, struct inet_timewait_sock *tw)
46-
{
47-
struct inet_hashinfo *hashinfo = sk->sk_prot->h.hashinfo;
48-
int twrefcnt = 0;
49-
50-
WARN_ON(!sk_unhashed(sk));
51-
52-
if (sk->sk_state == TCP_LISTEN) {
53-
struct inet_listen_hashbucket *ilb;
54-
55-
ilb = &hashinfo->listening_hash[inet_sk_listen_hashfn(sk)];
56-
spin_lock(&ilb->lock);
57-
__sk_nulls_add_node_rcu(sk, &ilb->head);
58-
spin_unlock(&ilb->lock);
59-
} else {
60-
unsigned int hash;
61-
struct hlist_nulls_head *list;
62-
spinlock_t *lock;
63-
64-
sk->sk_hash = hash = sk_ehashfn(sk);
65-
list = &inet_ehash_bucket(hashinfo, hash)->chain;
66-
lock = inet_ehash_lockp(hashinfo, hash);
67-
spin_lock(lock);
68-
__sk_nulls_add_node_rcu(sk, list);
69-
if (tw) {
70-
WARN_ON(sk->sk_hash != tw->tw_hash);
71-
twrefcnt = inet_twsk_unhash(tw);
72-
}
73-
spin_unlock(lock);
74-
}
75-
76-
sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
77-
return twrefcnt;
78-
}
79-
EXPORT_SYMBOL(__inet6_hash);
80-
8145
/*
8246
* Sockets in TCP_CLOSE state are _always_ taken out of the hash, so
8347
* we need not check it for TCP lookups anymore, thanks Alexey. -DaveM
@@ -306,6 +270,6 @@ int inet6_hash_connect(struct inet_timewait_death_row *death_row,
306270
struct sock *sk)
307271
{
308272
return __inet_hash_connect(death_row, sk, inet6_sk_port_offset(sk),
309-
__inet6_check_established, __inet6_hash);
273+
__inet6_check_established, __inet_hash_nolisten);
310274
}
311275
EXPORT_SYMBOL_GPL(inet6_hash_connect);

net/ipv6/tcp_ipv6.c

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,6 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb)
104104
}
105105
}
106106

107-
static void tcp_v6_hash(struct sock *sk)
108-
{
109-
if (sk->sk_state != TCP_CLOSE) {
110-
if (inet_csk(sk)->icsk_af_ops == &ipv6_mapped) {
111-
tcp_prot.hash(sk);
112-
return;
113-
}
114-
local_bh_disable();
115-
__inet6_hash(sk, NULL);
116-
local_bh_enable();
117-
}
118-
}
119-
120107
static __u32 tcp_v6_init_sequence(const struct sk_buff *skb)
121108
{
122109
return secure_tcpv6_sequence_number(ipv6_hdr(skb)->daddr.s6_addr32,
@@ -1224,7 +1211,7 @@ static struct sock *tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
12241211
tcp_done(newsk);
12251212
goto out;
12261213
}
1227-
__inet6_hash(newsk, NULL);
1214+
__inet_hash(newsk, NULL);
12281215

12291216
return newsk;
12301217

@@ -1883,7 +1870,7 @@ struct proto tcpv6_prot = {
18831870
.sendpage = tcp_sendpage,
18841871
.backlog_rcv = tcp_v6_do_rcv,
18851872
.release_cb = tcp_release_cb,
1886-
.hash = tcp_v6_hash,
1873+
.hash = inet_hash,
18871874
.unhash = inet_unhash,
18881875
.get_port = inet_csk_get_port,
18891876
.enter_memory_pressure = tcp_enter_memory_pressure,

0 commit comments

Comments
 (0)