Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jun 2016 19:12:01 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 210726] tcp connect() EADDRINUSE
Message-ID:  <bug-210726-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D210726

            Bug ID: 210726
           Summary: tcp connect() EADDRINUSE
           Product: Base System
           Version: 10.3-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: aler@playground.ru

Port autoselection on connect() without bind() (or with bind() with zero
sin_port) sometimes works wronly and gives already busy local port
number that will lead to EADDRINUSE on connection attempt. This all
happens when jails used.

How to fix:

src/sys/netinet/in_pcb.c, in_pcb_lport() function

calls to in_pcblookup_local() should have last argument NULL, not cred

that's because here we are not about getting some access but about
avoiding port number conflicts, so all inpcb's should be taken in account


This all applies to FreeBSD 9.x, 10.x and HEAD (possibly older versions too=
).

Patch:

diff -ur src-svn/10.2/sys/netinet/in_pcb.c src/sys/netinet/in_pcb.c
--- src-svn/10.2/sys/netinet/in_pcb.c   2016-03-15 22:58:38.088511000 +0300
+++ src/sys/netinet/in_pcb.c    2016-05-20 14:51:43.340568000 +0300
@@ -452,7 +452,7 @@
 #endif
 #ifdef INET
                        tmpinp =3D in_pcblookup_local(pcbinfo, laddr,
-                           lport, lookupflags, cred);
+                           lport, lookupflags, NULL /*cred*/);
 #endif
        } while (tmpinp !=3D NULL);

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-210726-8>