diff options
author | Erik Nordmark <Erik.Nordmark@Sun.COM> | 2010-02-17 19:52:19 -0800 |
---|---|---|
committer | Erik Nordmark <Erik.Nordmark@Sun.COM> | 2010-02-17 19:52:19 -0800 |
commit | 76a1033e5eab8f829e5080c3397bf826f6dd382c (patch) | |
tree | ba166dbaf43567f180d7260459c258d5718a271d /usr/src/uts/common/inet/tcp/tcp.c | |
parent | 707da956f10b527c61331142582204e292b21bd6 (diff) | |
download | illumos-joyent-76a1033e5eab8f829e5080c3397bf826f6dd382c.tar.gz |
6923355 tcp leaves conn_ixa->ixa_cred unitialized causing confusion
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp.c')
-rw-r--r-- | usr/src/uts/common/inet/tcp/tcp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp.c b/usr/src/uts/common/inet/tcp/tcp.c index 165614e8f9..1b43c16b72 100644 --- a/usr/src/uts/common/inet/tcp/tcp.c +++ b/usr/src/uts/common/inet/tcp/tcp.c @@ -2412,6 +2412,7 @@ tcp_accept_swap(tcp_t *listener, tcp_t *acceptor, tcp_t *eager) if (econnp->conn_cred != NULL) crfree(econnp->conn_cred); econnp->conn_cred = aconnp->conn_cred; + econnp->conn_ixa->ixa_cred = econnp->conn_cred; aconnp->conn_cred = NULL; econnp->conn_cpid = aconnp->conn_cpid; ASSERT(econnp->conn_netstack == aconnp->conn_netstack); @@ -6542,6 +6543,7 @@ tcp_reinit(tcp_t *tcp) */ tcp_reinit_values(tcp); ipcl_hash_remove(connp); + /* Note that ixa_cred gets cleared in ixa_cleanup */ ixa_cleanup(connp->conn_ixa); tcp_ipsec_cleanup(tcp); @@ -7882,6 +7884,10 @@ tcp_create_common(cred_t *credp, boolean_t isv6, boolean_t issocket, connp->conn_cpid = curproc->p_pid; connp->conn_open_time = ddi_get_lbolt64(); + /* Cache things in the ixa without any refhold */ + connp->conn_ixa->ixa_cred = credp; + connp->conn_ixa->ixa_cpid = connp->conn_cpid; + connp->conn_zoneid = zoneid; /* conn_allzones can not be set this early, hence no IPCL_ZONEID */ connp->conn_ixa->ixa_zoneid = zoneid; |