Page MenuHomeFreeBSD

D16282.id45346.diff
No OneTemporary

D16282.id45346.diff

Index: sys/netinet/cc/cc_cdg.c
===================================================================
--- sys/netinet/cc/cc_cdg.c
+++ sys/netinet/cc/cc_cdg.c
@@ -337,6 +337,8 @@
struct qdiff_sample *qds, *qds_n;
cdg_data = ccv->cc_data;
+ if (cdg_data == NULL)
+ return;
qds = STAILQ_FIRST(&cdg_data->qdiffmin_q);
while (qds != NULL) {
@@ -353,6 +355,7 @@
}
free(ccv->cc_data, M_CDG);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/cc/cc_chd.c
===================================================================
--- sys/netinet/cc/cc_chd.c
+++ sys/netinet/cc/cc_chd.c
@@ -307,8 +307,8 @@
chd_cb_destroy(struct cc_var *ccv)
{
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_CHD);
+ free(ccv->cc_data, M_CHD);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/cc/cc_cubic.c
===================================================================
--- sys/netinet/cc/cc_cubic.c
+++ sys/netinet/cc/cc_cubic.c
@@ -213,9 +213,8 @@
static void
cubic_cb_destroy(struct cc_var *ccv)
{
-
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_CUBIC);
+ free(ccv->cc_data, M_CUBIC);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/cc/cc_dctcp.c
===================================================================
--- sys/netinet/cc/cc_dctcp.c
+++ sys/netinet/cc/cc_dctcp.c
@@ -184,8 +184,8 @@
static void
dctcp_cb_destroy(struct cc_var *ccv)
{
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_dctcp);
+ free(ccv->cc_data, M_dctcp);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/cc/cc_htcp.c
===================================================================
--- sys/netinet/cc/cc_htcp.c
+++ sys/netinet/cc/cc_htcp.c
@@ -238,9 +238,8 @@
static void
htcp_cb_destroy(struct cc_var *ccv)
{
-
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_HTCP);
+ free(ccv->cc_data, M_HTCP);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/cc/cc_newreno.c
===================================================================
--- sys/netinet/cc/cc_newreno.c
+++ sys/netinet/cc/cc_newreno.c
@@ -127,9 +127,8 @@
static void
newreno_cb_destroy(struct cc_var *ccv)
{
-
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_NEWRENO);
+ free(ccv->cc_data, M_NEWRENO);
+ ccv->cc_data = NULL;
}
static void
Index: sys/netinet/cc/cc_vegas.c
===================================================================
--- sys/netinet/cc/cc_vegas.c
+++ sys/netinet/cc/cc_vegas.c
@@ -170,9 +170,8 @@
static void
vegas_cb_destroy(struct cc_var *ccv)
{
-
- if (ccv->cc_data != NULL)
- free(ccv->cc_data, M_VEGAS);
+ free(ccv->cc_data, M_VEGAS);
+ ccv->cc_data = NULL;
}
static int
Index: sys/netinet/tcp_subr.c
===================================================================
--- sys/netinet/tcp_subr.c
+++ sys/netinet/tcp_subr.c
@@ -1730,10 +1730,15 @@
*/
if (CC_ALGO(tp) == unload_algo) {
tmpalgo = CC_ALGO(tp);
- /* NewReno does not require any init. */
- CC_ALGO(tp) = &newreno_cc_algo;
if (tmpalgo->cb_destroy != NULL)
tmpalgo->cb_destroy(tp->ccv);
+ KASSERT(CC_DATA(tp) == NULL,
+ ("cc should have nullified ",
+ "cc_data in %s", __func__));
+ /* NewReno shall internally init cc_data
+ * if ABE sockopt is re-called.
+ */
+ CC_ALGO(tp) = &newreno_cc_algo;
}
}
INP_WUNLOCK(inp);
@@ -1885,6 +1890,8 @@
/* Allow the CC algorithm to clean up after itself. */
if (CC_ALGO(tp)->cb_destroy != NULL)
CC_ALGO(tp)->cb_destroy(tp->ccv);
+ KASSERT(CC_DATA(tp) == NULL, ("cc should have nullified cc_data in %s",
+ __func__));
#ifdef TCP_HHOOK
khelp_destroy_osd(tp->osd);
Index: sys/netinet/tcp_usrreq.c
===================================================================
--- sys/netinet/tcp_usrreq.c
+++ sys/netinet/tcp_usrreq.c
@@ -1729,6 +1729,8 @@
*/
if (CC_ALGO(tp)->cb_destroy != NULL)
CC_ALGO(tp)->cb_destroy(tp->ccv);
+ KASSERT(CC_DATA(tp) == NULL, ("cc should have ",
+ "nullified cc_data in %s", __func__));
CC_ALGO(tp) = algo;
/*
* If something goes pear shaped initialising the new

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 2, 5:18 AM (16 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30706967
Default Alt Text
D16282.id45346.diff (3 KB)

Event Timeline