Author: glebius
Date: Wed Jan 22 06:01:26 2020
New Revision: 356978
URL: https://svnweb.freebsd.org/changeset/base/356978

Log:
  tcp_usr_attach() doesn't need network epoch.  in_pcbfree() and
  in_pcbdetach() perform all necessary synchronization themselves.

Modified:
  head/sys/netinet/tcp_usrreq.c

Modified: head/sys/netinet/tcp_usrreq.c
==============================================================================
--- head/sys/netinet/tcp_usrreq.c       Wed Jan 22 05:58:29 2020        
(r356977)
+++ head/sys/netinet/tcp_usrreq.c       Wed Jan 22 06:01:26 2020        
(r356978)
@@ -151,7 +151,6 @@ static void tcp_fill_info(struct tcpcb *, struct tcp_i
 static int
 tcp_usr_attach(struct socket *so, int proto, struct thread *td)
 {
-       struct epoch_tracker et;
        struct inpcb *inp;
        struct tcpcb *tp = NULL;
        int error;
@@ -169,12 +168,9 @@ tcp_usr_attach(struct socket *so, int proto, struct th
 
        so->so_rcv.sb_flags |= SB_AUTOSIZE;
        so->so_snd.sb_flags |= SB_AUTOSIZE;
-       NET_EPOCH_ENTER(et);
        error = in_pcballoc(so, &V_tcbinfo);
-       if (error) {
-               NET_EPOCH_EXIT(et);
+       if (error)
                goto out;
-       }
        inp = sotoinpcb(so);
 #ifdef INET6
        if (inp->inp_vflag & INP_IPV6PROTO) {
@@ -188,15 +184,13 @@ tcp_usr_attach(struct socket *so, int proto, struct th
                inp->inp_vflag |= INP_IPV4;
        tp = tcp_newtcpcb(inp);
        if (tp == NULL) {
+               error = ENOBUFS;
                in_pcbdetach(inp);
                in_pcbfree(inp);
-               NET_EPOCH_EXIT(et);
-               error = ENOBUFS;
                goto out;
        }
        tp->t_state = TCPS_CLOSED;
        INP_WUNLOCK(inp);
-       NET_EPOCH_EXIT(et);
        TCPSTATES_INC(TCPS_CLOSED);
        if ((so->so_options & SO_LINGER) && so->so_linger == 0)
                so->so_linger = TCP_LINGERTIME;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to