88 lines
2.4 KiB
Diff
88 lines
2.4 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Wed, 20 Jun 2012 02:19:23 +0100
|
|
Subject: staging: zsmalloc: Finish conversion to a separate module
|
|
Bug-Debian: http://bugs.debian.org/677273
|
|
|
|
ZSMALLOC is tristate, but the code has no MODULE_LICENSE and since it
|
|
depends on GPL-only symbols it cannot be loaded as a module. This in
|
|
turn breaks zram which now depends on it. I assume it's meant to be
|
|
Dual BSD/GPL like the other z-stuff.
|
|
|
|
There is also no module_exit, which makes it impossible to unload.
|
|
Add the appropriate module_init and module_exit declarations suggested
|
|
by comments.
|
|
|
|
Reported-by: Christian Ohm <chr.ohm@gmx.net>
|
|
References: http://bugs.debian.org/677273
|
|
Cc: stable@vger.kernel.org # v3.4
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
drivers/staging/zsmalloc/zsmalloc-main.c | 33 +++++++-----------------------
|
|
1 file changed, 7 insertions(+), 26 deletions(-)
|
|
|
|
diff --git a/drivers/staging/zsmalloc/zsmalloc-main.c b/drivers/staging/zsmalloc/zsmalloc-main.c
|
|
index 4496737..8ded9a0 100644
|
|
--- a/drivers/staging/zsmalloc/zsmalloc-main.c
|
|
+++ b/drivers/staging/zsmalloc/zsmalloc-main.c
|
|
@@ -425,12 +425,6 @@ static struct page *find_get_zspage(struct size_class *class)
|
|
}
|
|
|
|
|
|
-/*
|
|
- * If this becomes a separate module, register zs_init() with
|
|
- * module_init(), zs_exit with module_exit(), and remove zs_initialized
|
|
-*/
|
|
-static int zs_initialized;
|
|
-
|
|
static int zs_cpu_notifier(struct notifier_block *nb, unsigned long action,
|
|
void *pcpu)
|
|
{
|
|
@@ -489,7 +483,7 @@ fail:
|
|
|
|
struct zs_pool *zs_create_pool(const char *name, gfp_t flags)
|
|
{
|
|
- int i, error, ovhd_size;
|
|
+ int i, ovhd_size;
|
|
struct zs_pool *pool;
|
|
|
|
if (!name)
|
|
@@ -516,28 +510,9 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags)
|
|
|
|
}
|
|
|
|
- /*
|
|
- * If this becomes a separate module, register zs_init with
|
|
- * module_init, and remove this block
|
|
- */
|
|
- if (!zs_initialized) {
|
|
- error = zs_init();
|
|
- if (error)
|
|
- goto cleanup;
|
|
- zs_initialized = 1;
|
|
- }
|
|
-
|
|
pool->flags = flags;
|
|
pool->name = name;
|
|
|
|
- error = 0; /* Success */
|
|
-
|
|
-cleanup:
|
|
- if (error) {
|
|
- zs_destroy_pool(pool);
|
|
- pool = NULL;
|
|
- }
|
|
-
|
|
return pool;
|
|
}
|
|
EXPORT_SYMBOL_GPL(zs_create_pool);
|
|
@@ -753,3 +728,9 @@ u64 zs_get_total_size_bytes(struct zs_pool *pool)
|
|
return npages << PAGE_SHIFT;
|
|
}
|
|
EXPORT_SYMBOL_GPL(zs_get_total_size_bytes);
|
|
+
|
|
+module_init(zs_init);
|
|
+module_exit(zs_exit);
|
|
+
|
|
+MODULE_LICENSE("Dual BSD/GPL");
|
|
+MODULE_AUTHOR("Nitin Gupta <ngupta@vflare.org>");
|