summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2008-02-22 15:08:10 +0000
committerrrs <rrs@FreeBSD.org>2008-02-22 15:08:10 +0000
commit64d271aebb17f5eb815f32031728d4445d15a27c (patch)
treec46123d66e9e2e7b68bb9cba434a124125de26c7 /sys
parent22032b7ba84f8e1f39b28f55fb4f543bd9cf6364 (diff)
downloadFreeBSD-src-64d271aebb17f5eb815f32031728d4445d15a27c.zip
FreeBSD-src-64d271aebb17f5eb815f32031728d4445d15a27c.tar.gz
Fixes a memory leak when VRF's are in play.
Submitted by: Prasad Narasimha (snprasad@cisco.com) Reviewed by: rrs
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/sctp_pcb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c
index 0d03637..25e5c79 100644
--- a/sys/netinet/sctp_pcb.c
+++ b/sys/netinet/sctp_pcb.c
@@ -223,6 +223,10 @@ sctp_free_vrf(struct sctp_vrf *vrf)
ret = atomic_fetchadd_int(&vrf->refcount, -1);
if (ret == 1) {
+ if (vrf->vrf_addr_hash) {
+ SCTP_HASH_FREE(vrf->vrf_addr_hash, vrf->vrf_addr_hashmark);
+ vrf->vrf_addr_hash = NULL;
+ }
/* We zero'd the count */
LIST_REMOVE(vrf, next_vrf);
SCTP_FREE(vrf, SCTP_M_VRF);
OpenPOWER on IntegriCloud