Commit 069f101f authored by Ben Hutchings's avatar Ben Hutchings Committed by Greg Kroah-Hartman

staging: zsmalloc: Finish conversion to a separate module

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 will make it impossible to unload.
Add the appropriate module_init and module_exit declarations suggested
by comments.
Reported-by: default avatarChristian Ohm <chr.ohm@gmx.net>
References: http://bugs.debian.org/677273
Cc: stable@vger.kernel.org # v3.4
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
Reviewed-by: default avatarJonathan Nieder <jrnieder@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2f0f8e6a
...@@ -471,12 +471,6 @@ static struct page *find_get_zspage(struct size_class *class) ...@@ -471,12 +471,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, static int zs_cpu_notifier(struct notifier_block *nb, unsigned long action,
void *pcpu) void *pcpu)
{ {
...@@ -535,7 +529,7 @@ static int zs_init(void) ...@@ -535,7 +529,7 @@ static int zs_init(void)
struct zs_pool *zs_create_pool(const char *name, gfp_t flags) 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; struct zs_pool *pool;
if (!name) if (!name)
...@@ -562,28 +556,9 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) ...@@ -562,28 +556,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->flags = flags;
pool->name = name; pool->name = name;
error = 0; /* Success */
cleanup:
if (error) {
zs_destroy_pool(pool);
pool = NULL;
}
return pool; return pool;
} }
EXPORT_SYMBOL_GPL(zs_create_pool); EXPORT_SYMBOL_GPL(zs_create_pool);
...@@ -799,3 +774,9 @@ u64 zs_get_total_size_bytes(struct zs_pool *pool) ...@@ -799,3 +774,9 @@ u64 zs_get_total_size_bytes(struct zs_pool *pool)
return npages << PAGE_SHIFT; return npages << PAGE_SHIFT;
} }
EXPORT_SYMBOL_GPL(zs_get_total_size_bytes); 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>");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment