diff options
author | rodrigc <rodrigc@FreeBSD.org> | 2013-12-04 07:55:49 +0000 |
---|---|---|
committer | rodrigc <rodrigc@FreeBSD.org> | 2013-12-04 07:55:49 +0000 |
commit | a19b1d3a5826fe9fb069c28583b0d82ad975d928 (patch) | |
tree | 39f8baa37ab7258af44bf74ee510ed5b681b8cc5 /sys/net | |
parent | 85a1f610563bb475e4e2eeb57a8450060df9564c (diff) | |
download | FreeBSD-src-a19b1d3a5826fe9fb069c28583b0d82ad975d928.zip FreeBSD-src-a19b1d3a5826fe9fb069c28583b0d82ad975d928.tar.gz |
MFC 258591
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.
Approved by: re (gjb)
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 9b9835f..20fe181 100644 --- a/sys/net/route.c +++ b/sys/net/route.c @@ -262,6 +262,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); |