This creates li_module_init and li_module_exit and shifts equivalent code
out of ccid3.c.
Also shifts dccp_li_hist_new as part of this and makes it static.
Signed-off-by: Ian McDonald <[EMAIL PROTECTED]>
---
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c
index a532249..d818f09 100644
--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -1236,19 +1236,12 @@ static __init int ccid3_module_init(void)
if (ccid3_tx_hist == NULL)
goto out_free_rx;
- ccid3_li_hist = dccp_li_hist_new("ccid3");
- if (ccid3_li_hist == NULL)
- goto out_free_tx;
-
rc = ccid_register(&ccid3);
if (rc != 0)
- goto out_free_loss_interval_history;
+ goto out_free_tx;
out:
return rc;
-out_free_loss_interval_history:
- dccp_li_hist_delete(ccid3_li_hist);
- ccid3_li_hist = NULL;
out_free_tx:
dccp_tx_hist_delete(ccid3_tx_hist);
ccid3_tx_hist = NULL;
@@ -1271,10 +1264,6 @@ static __exit void ccid3_module_exit(void)
dccp_rx_hist_delete(ccid3_rx_hist);
ccid3_rx_hist = NULL;
}
- if (ccid3_li_hist != NULL) {
- dccp_li_hist_delete(ccid3_li_hist);
- ccid3_li_hist = NULL;
- }
}
module_exit(ccid3_module_exit);
diff --git a/net/dccp/ccids/lib/loss_interval.c
b/net/dccp/ccids/lib/loss_interval.c
index f21e1a9..5b2c7c1 100644
--- a/net/dccp/ccids/lib/loss_interval.c
+++ b/net/dccp/ccids/lib/loss_interval.c
@@ -19,7 +19,7 @@
struct dccp_li_hist *ccid3_li_hist;
EXPORT_SYMBOL_GPL(ccid3_li_hist);
-struct dccp_li_hist *dccp_li_hist_new(const char *name)
+static struct dccp_li_hist *dccp_li_hist_new(const char *name)
{
struct dccp_li_hist *hist = kmalloc(sizeof(*hist), GFP_ATOMIC);
static const char dccp_li_hist_mask[] = "li_hist_%s";
@@ -50,8 +50,6 @@ out_free_hist:
goto out;
}
-EXPORT_SYMBOL_GPL(dccp_li_hist_new);
-
void dccp_li_hist_delete(struct dccp_li_hist *hist)
{
const char* name = kmem_cache_name(hist->dccplih_slab);
@@ -144,3 +142,19 @@ int dccp_li_hist_interval_new(struct dccp_li_hist *hist,
}
EXPORT_SYMBOL_GPL(dccp_li_hist_interval_new);
+
+static __init int li_module_init(void)
+{
+ ccid3_li_hist = dccp_li_hist_new("ccid3");
+ return ccid3_li_hist == NULL ? -ENOBUFS : 0;
+}
+module_init(li_module_init);
+
+static __exit void li_module_exit(void)
+{
+ if (ccid3_li_hist != NULL) {
+ dccp_li_hist_delete(ccid3_li_hist);
+ ccid3_li_hist = NULL;
+ }
+}
+module_exit(li_module_exit);
diff --git a/net/dccp/ccids/lib/loss_interval.h
b/net/dccp/ccids/lib/loss_interval.h
index 4186a55..90f23b4 100644
--- a/net/dccp/ccids/lib/loss_interval.h
+++ b/net/dccp/ccids/lib/loss_interval.h
@@ -23,7 +23,6 @@ struct dccp_li_hist {
struct kmem_cache *dccplih_slab;
};
-extern struct dccp_li_hist *dccp_li_hist_new(const char *name);
extern void dccp_li_hist_delete(struct dccp_li_hist *hist);
struct dccp_li_hist_entry {
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html