summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorlstewart <lstewart@FreeBSD.org>2014-09-16 21:26:24 +0000
committerlstewart <lstewart@FreeBSD.org>2014-09-16 21:26:24 +0000
commit25b8a28db6410dc876d42bc809a1b599c2618f1d (patch)
treeff2c8cbe35ddfba44d1ce4382bc7bad3da74013d /sys/netinet
parented5abc5007cf104267c1e277ce650081e8a42e09 (diff)
downloadFreeBSD-src-25b8a28db6410dc876d42bc809a1b599c2618f1d.zip
FreeBSD-src-25b8a28db6410dc876d42bc809a1b599c2618f1d.tar.gz
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 <garmitage@swin.edu.au> Approved by: re(gjb)
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/cc/cc_cdg.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/netinet/cc/cc_cdg.c b/sys/netinet/cc/cc_cdg.c
index 3ebaacf..f2c4eea 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. */
@@ -278,6 +280,14 @@ cdg_mod_init(void)
}
static int
+cdg_mod_destroy(void)
+{
+
+ uma_zdestroy(qdiffsample_zone);
+ return (0);
+}
+
+static int
cdg_cb_init(struct cc_var *ccv)
{
struct cdg *cdg_data;
OpenPOWER on IntegriCloud