diff options
author | rrs <rrs@FreeBSD.org> | 2008-02-22 15:08:10 +0000 |
---|---|---|
committer | rrs <rrs@FreeBSD.org> | 2008-02-22 15:08:10 +0000 |
commit | 64d271aebb17f5eb815f32031728d4445d15a27c (patch) | |
tree | c46123d66e9e2e7b68bb9cba434a124125de26c7 /sys | |
parent | 22032b7ba84f8e1f39b28f55fb4f543bd9cf6364 (diff) | |
download | FreeBSD-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.c | 4 |
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); |