diff options
author | rodrigc <rodrigc@FreeBSD.org> | 2013-11-25 20:33:33 +0000 |
---|---|---|
committer | rodrigc <rodrigc@FreeBSD.org> | 2013-11-25 20:33:33 +0000 |
commit | 7064342be9ecf214e8d44fcfd515b8673dc8c43b (patch) | |
tree | e1f6dfaae2c36f476dd7bd25d6b91090c00f481c /sys/net | |
parent | 94f555fd4f627d060f483a62288b633532b09fa2 (diff) | |
download | FreeBSD-src-7064342be9ecf214e8d44fcfd515b8673dc8c43b.zip FreeBSD-src-7064342be9ecf214e8d44fcfd515b8673dc8c43b.tar.gz |
In vnet_route_uninit(), free some memory that is allocated in vnet_route_init().
To reproduce the problem:
(1) Take a GENERIC kernel config, and add options for: VIMAGE, WITNESS,
INVARIANTS.
(2) Run this command in a loop:
jail -l -u root -c path=/ name=foo persist vnet && jexec foo ifconfig lo0 127.0.0.1/8 && jail -r foo
see: http://lists.freebsd.org/pipermail/freebsd-current/2010-November/021280.html
http://lists.freebsd.org/pipermail/freebsd-current/2010-November/021291.html
This doesn't eliminate all the "Freed UMA keg was not empty" warning messages
on the console, but it helps.
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/route.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/net/route.c b/sys/net/route.c index a64c669..dd32980 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -255,6 +255,9 @@ vnet_route_uninit(const void *unused __unused) dom->dom_rtdetach((void **)rnh, dom->dom_rtoffset); } } + + free(V_rt_tables, M_RTABLE); + uma_zdestroy(V_rtzone); } VNET_SYSUNINIT(vnet_route_uninit, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, vnet_route_uninit, 0); |