From c1e261e43d5c69d4a39140ea11d405f7f6d47887 Mon Sep 17 00:00:00 2001 From: lstewart Date: Tue, 16 Sep 2014 21:26:24 +0000 Subject: [PATCH] MFC r270160: Destroy the "qdiffsample_zone" UMA zone on unload to avoid a use-after-unload panic easily triggered by running "sysctl -a" after unload. Reported and tested by: Grenville Armitage Approved by: re(gjb) git-svn-id: svn://svn.freebsd.org/base/stable/10@271690 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/netinet/cc/cc_cdg.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/netinet/cc/cc_cdg.c b/sys/netinet/cc/cc_cdg.c index 3ebaacf77..f2c4eea66 100644 --- a/sys/netinet/cc/cc_cdg.c +++ b/sys/netinet/cc/cc_cdg.c @@ -221,6 +221,7 @@ static VNET_DEFINE(uint32_t, cdg_hold_backoff); /* Function prototypes. */ static int cdg_mod_init(void); +static int cdg_mod_destroy(void); static void cdg_conn_init(struct cc_var *ccv); static int cdg_cb_init(struct cc_var *ccv); static void cdg_cb_destroy(struct cc_var *ccv); @@ -234,7 +235,8 @@ struct cc_algo cdg_cc_algo = { .cb_destroy = cdg_cb_destroy, .cb_init = cdg_cb_init, .conn_init = cdg_conn_init, - .cong_signal = cdg_cong_signal + .cong_signal = cdg_cong_signal, + .mod_destroy = cdg_mod_destroy }; /* Vnet created and being initialised. */ @@ -277,6 +279,14 @@ cdg_mod_init(void) return (0); } +static int +cdg_mod_destroy(void) +{ + + uma_zdestroy(qdiffsample_zone); + return (0); +} + static int cdg_cb_init(struct cc_var *ccv) { -- 2.45.0