Skip to contentSkip to conversation

: Drop the inet_inherit_port() call.

PATCH In review Pavel Emelyanov 2 participants 2 messages Apr 17, 2008 – Apr 18, 2008

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 : Drop the inet_inherit_port() call.

As I can see from the code, two places (tcp_v6_syn_recv_sock and dccp_v6_request_recv_sock) that call this one already run with BHs disabled, so it's safe to call __inet_inherit_port there.

Besides (in case I missed smth with code review) the calltrace tcp_v6_syn_recv_sock
`- tcp_v4_syn_recv_sock

     `- __inet_inherit_port

and the similar for DCCP are valid, but assumes BHs to be disabled.

---
 include/net/inet_hashtables.h |    7 -------
 net/dccp/ipv6.c               |    2 +-
 net/ipv6/tcp_ipv6.c           |    2 +-
 3 files changed, 2 insertions(+), 9 deletions(-)
include/net/inet_hashtables.h +0 -7
index 5525227..5ec91d8 100644
@@ -235,13 +235,6 @@ static inline void __inet_inherit_port(struct sock *sk, struct sock *child)
 	spin_unlock(&head->lock);
 }
 
-static inline void inet_inherit_port(struct sock *sk, struct sock *child)
-{
-	local_bh_disable();
-	__inet_inherit_port(sk, child);
-	local_bh_enable();
-}
-
 extern void inet_put_port(struct sock *sk);
 
 extern void inet_listen_wlock(struct inet_hashinfo *hashinfo);
net/dccp/ipv6.c +1 -1
index f8371c7..9b1129b 100644
@@ -625,7 +625,7 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
 	newinet->daddr = newinet->saddr = newinet->rcv_saddr = LOOPBACK4_IPV6;
 
 	__inet6_hash(newsk);
-	inet_inherit_port(sk, newsk);
+	__inet_inherit_port(sk, newsk);
 
 	return newsk;
 
net/ipv6/tcp_ipv6.c +1 -1
index 231c4dd..715965f 100644
@@ -1534,7 +1534,7 @@ static struct sock * tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
 #endif
 
 	__inet6_hash(newsk);
-	inet_inherit_port(sk, newsk);
+	__inet_inherit_port(sk, newsk);
 
 	return newsk;
 
Signature · 1 line
1.5.3.4
maintainer
#1 lore raw

From: Pavel Emelyanov <[email protected]>
Date: Thu, 17 Apr 2008 19:59:38 +0400

Quoted 11 lines

As I can see from the code, two places (tcp_v6_syn_recv_sock and dccp_v6_request_recv_sock) that call this one already run with BHs disabled, so it's safe to call __inet_inherit_port there.

Besides (in case I missed smth with code review) the calltrace tcp_v6_syn_recv_sock
`- tcp_v4_syn_recv_sock

     `- __inet_inherit_port

and the similar for DCCP are valid, but assumes BHs to be disabled.

I agree with you analysis, all of these sites have BH disabled, patch applied.