summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/netinet/tcp_usrreq.c42
-rw-r--r--sys/netinet6/in6_pcb.c10
-rw-r--r--sys/netinet6/in6_pcb.h1
-rw-r--r--sys/netinet6/raw_ip6.c2
-rw-r--r--sys/netinet6/udp6_usrreq.c2
5 files changed, 12 insertions, 45 deletions
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
index 856d3f05b323..3127c863c82b 100644
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -187,24 +187,15 @@ tcp_detach(struct socket *so, struct inpcb *inp)
if (inp->inp_vflag & INP_DROPPED) {
KASSERT(tp == NULL, ("tcp_detach: INP_TIMEWAIT && "
"INP_DROPPED && tp != NULL"));
+ in_pcbdetach(inp);
#ifdef INET6
- if (isipv6) {
- in6_pcbdetach(inp);
+ if (isipv6)
in6_pcbfree(inp);
- } else {
+ else
#endif
- in_pcbdetach(inp);
in_pcbfree(inp);
-#ifdef INET6
- }
-#endif
} else {
-#ifdef INET6
- if (isipv6)
- in6_pcbdetach(inp);
- else
-#endif
- in_pcbdetach(inp);
+ in_pcbdetach(inp);
INP_WUNLOCK(inp);
}
} else {
@@ -220,23 +211,14 @@ tcp_detach(struct socket *so, struct inpcb *inp)
if (inp->inp_vflag & INP_DROPPED ||
tp->t_state < TCPS_SYN_SENT) {
tcp_discardcb(tp);
+ in_pcbdetach(inp);
#ifdef INET6
- if (isipv6) {
- in6_pcbdetach(inp);
+ if (isipv6)
in6_pcbfree(inp);
- } else {
+ else
#endif
- in_pcbdetach(inp);
in_pcbfree(inp);
-#ifdef INET6
- }
-#endif
} else {
-#ifdef INET6
- if (isipv6)
- in6_pcbdetach(inp);
- else
-#endif
in_pcbdetach(inp);
}
}
@@ -1496,17 +1478,13 @@ tcp_attach(struct socket *so)
inp->inp_vflag |= INP_IPV4;
tp = tcp_newtcpcb(inp);
if (tp == NULL) {
+ in_pcbdetach(inp);
#ifdef INET6
- if (isipv6) {
- in6_pcbdetach(inp);
+ if (isipv6)
in6_pcbfree(inp);
- } else {
+ else
#endif
- in_pcbdetach(inp);
in_pcbfree(inp);
-#ifdef INET6
- }
-#endif
INP_INFO_WUNLOCK(&V_tcbinfo);
return (ENOBUFS);
}
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
index d16852edfd95..760da8619308 100644
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -411,16 +411,6 @@ in6_pcbdisconnect(struct inpcb *inp)
}
void
-in6_pcbdetach(struct inpcb *inp)
-{
-
- KASSERT(inp->inp_socket != NULL, ("%s: inp_socket == NULL", __func__));
-
- inp->inp_socket->so_pcb = NULL;
- inp->inp_socket = NULL;
-}
-
-void
in6_pcbfree(struct inpcb *inp)
{
struct inpcbinfo *ipi = inp->inp_pcbinfo;
diff --git a/sys/netinet6/in6_pcb.h b/sys/netinet6/in6_pcb.h
index c1e2107bd815..c76f9f1bad23 100644
--- a/sys/netinet6/in6_pcb.h
+++ b/sys/netinet6/in6_pcb.h
@@ -73,7 +73,6 @@ void in6_pcbpurgeif0 __P((struct inpcbinfo *, struct ifnet *));
void in6_losing __P((struct inpcb *));
int in6_pcbbind __P((struct inpcb *, struct sockaddr *, struct ucred *));
int in6_pcbconnect __P((struct inpcb *, struct sockaddr *, struct ucred *));
-void in6_pcbdetach __P((struct inpcb *));
void in6_pcbdisconnect __P((struct inpcb *));
void in6_pcbfree __P((struct inpcb *));
int in6_pcbladdr __P((struct inpcb *, struct sockaddr *,
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c
index ece033e38bd2..9191f4a0d832 100644
--- a/sys/netinet6/raw_ip6.c
+++ b/sys/netinet6/raw_ip6.c
@@ -604,7 +604,7 @@ rip6_detach(struct socket *so)
INP_INFO_WLOCK(&V_ripcbinfo);
INP_WLOCK(inp);
free(inp->in6p_icmp6filt, M_PCB);
- in6_pcbdetach(inp);
+ in_pcbdetach(inp);
in6_pcbfree(inp);
INP_INFO_WUNLOCK(&V_ripcbinfo);
}
diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c
index 276af831607e..f51156c8ddeb 100644
--- a/sys/netinet6/udp6_usrreq.c
+++ b/sys/netinet6/udp6_usrreq.c
@@ -900,7 +900,7 @@ udp6_detach(struct socket *so)
INP_INFO_WLOCK(&V_udbinfo);
INP_WLOCK(inp);
- in6_pcbdetach(inp);
+ in_pcbdetach(inp);
in6_pcbfree(inp);
INP_INFO_WUNLOCK(&V_udbinfo);
}