Mercurial > unleashed > wips
changeset 10592:62ea4b0f9248
6883357 spdsock leaks ipsec_tun_pol_t structures processing SPD_DUMP
author | Dan McDonald <danmcd@sun.com> |
---|---|
date | Mon, 21 Sep 2009 12:56:39 -0400 |
parents | 2e4b69967f09 |
children | f28e850593b5 |
files | usr/src/uts/common/inet/ip/spdsock.c |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/inet/ip/spdsock.c Mon Sep 21 09:38:11 2009 -0700 +++ b/usr/src/uts/common/inet/ip/spdsock.c Mon Sep 21 12:56:39 2009 -0400 @@ -1420,11 +1420,16 @@ mblk_t *m; ipsec_policy_head_t *iph = ss->spdsock_dump_head; mblk_t *req = ss->spdsock_dump_req; + netstack_t *ns = ss->spdsock_spds->spds_netstack; rw_enter(&iph->iph_lock, RW_READER); m = spdsock_dump_ruleset(req, iph, ss->spdsock_dump_count, error); rw_exit(&iph->iph_lock); - IPPH_REFRELE(iph, ss->spdsock_spds->spds_netstack); + IPPH_REFRELE(iph, ns); + if (ss->spdsock_itp != NULL) { + ITP_REFRELE(ss->spdsock_itp, ns); + ss->spdsock_itp = NULL; + } ss->spdsock_dump_req = NULL; freemsg(req);