summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorDan McDonald <danmcd@sun.com>2009-10-12 15:52:05 -0400
committerDan McDonald <danmcd@sun.com>2009-10-12 15:52:05 -0400
commit051c7f8a398d8146061ecfd231397df7912c19a9 (patch)
tree0ba327458260bc5adec5989fbf9f044daddc7169 /usr/src
parentff060bd829a533f5a355dbc1e21cf7652ce8f61b (diff)
downloadillumos-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.c17
-rw-r--r--usr/src/uts/common/inet/ip/spdsock.c5
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);