diff options
author | Dan McDonald <danmcd@sun.com> | 2009-10-12 15:52:05 -0400 |
---|---|---|
committer | Dan McDonald <danmcd@sun.com> | 2009-10-12 15:52:05 -0400 |
commit | 051c7f8a398d8146061ecfd231397df7912c19a9 (patch) | |
tree | 0ba327458260bc5adec5989fbf9f044daddc7169 /usr/src | |
parent | ff060bd829a533f5a355dbc1e21cf7652ce8f61b (diff) | |
download | illumos-joyent-051c7f8a398d8146061ecfd231397df7912c19a9.tar.gz |
6887188 Leftover ITP leaks from iptun putback
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/inet/ip/sadb.c | 17 | ||||
-rw-r--r-- | usr/src/uts/common/inet/ip/spdsock.c | 5 |
2 files changed, 10 insertions, 12 deletions
diff --git a/usr/src/uts/common/inet/ip/sadb.c b/usr/src/uts/common/inet/ip/sadb.c index 181ad1bdc2..55de6def80 100644 --- a/usr/src/uts/common/inet/ip/sadb.c +++ b/usr/src/uts/common/inet/ip/sadb.c @@ -6597,6 +6597,8 @@ ipsec_tun_pol(ipsec_selector_t *sel, ipsec_policy_t **ppp, int err; ipsec_policy_head_t *polhead; + *diagnostic = 0; + /* Check for inner selectors and act appropriately */ if (innsrcext != NULL) { @@ -6734,7 +6736,7 @@ ipsec_construct_inverse_acquire(sadb_msg_t *samsg, sadb_ext_t *extv[], ipsec_tun_pol_t *itp = NULL; ipsec_policy_t *pp = NULL; ipsec_selector_t sel, isel; - mblk_t *retmp; + mblk_t *retmp = NULL; ip_stack_t *ipst = ns->netstack_ip; /* Normalize addresses */ @@ -6884,19 +6886,16 @@ ipsec_construct_inverse_acquire(sadb_msg_t *samsg, sadb_ext_t *extv[], if (pp != NULL) { IPPOL_REFRELE(pp, ns); } + ASSERT(err == 0 && diagnostic == 0); + if (retmp == NULL) + err = ENOMEM; +bail: if (itp != NULL) { ITP_REFRELE(itp, ns); } - if (retmp != NULL) { - return (retmp); - } else { - err = ENOMEM; - diagnostic = 0; - } -bail: samsg->sadb_msg_errno = (uint8_t)err; samsg->sadb_x_msg_diagnostic = (uint16_t)diagnostic; - return (NULL); + return (retmp); } /* diff --git a/usr/src/uts/common/inet/ip/spdsock.c b/usr/src/uts/common/inet/ip/spdsock.c index 4a9856857e..726917c6ab 100644 --- a/usr/src/uts/common/inet/ip/spdsock.c +++ b/usr/src/uts/common/inet/ip/spdsock.c @@ -2151,13 +2151,11 @@ spdsock_clone(queue_t *q, mblk_t *mp, spd_if_t *tunname) active = (spmsg->spd_msg_spdid == SPD_ACTIVE); audit_pf_policy(SPD_CLONE, cr, - ns, ITP_NAME(itp), active, ENOENT, - cpid); + ns, NULL, active, ENOENT, cpid); } return; } spdsock_clone_node(itp, &error, NULL); - ITP_REFRELE(itp, ns); if (audit_active) { boolean_t active; spd_msg_t *spmsg = (spd_msg_t *)mp->b_rptr; @@ -2169,6 +2167,7 @@ spdsock_clone(queue_t *q, mblk_t *mp, spd_if_t *tunname) audit_pf_policy(SPD_CLONE, cr, ns, ITP_NAME(itp), active, error, cpid); } + ITP_REFRELE(itp, ns); } } else { error = ipsec_clone_system_policy(ns); |