From: Michal Hocko <mhocko@xxxxxxx> 835f2f51 (staging: zcache: enable zcache to be built/loaded as a module) introduced in 3.10-rc1 has introduced a bug for zcache=FOO module parameter processing. zcache_comp_init return code doesn't agree with crypto_has_comp which uses 1 for the success unlike zcache_comp_init which uses 0. This causes module loading failure even if the given algorithm is supported: [ 0.815330] zcache: compressor initialization failed Reported-by: Cristian Rodríguez <crrodriguez@xxxxxxxxxxxx> Signed-off-by: Michal Hocko <mhocko@xxxxxxx> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Signed-off-by: Bob Liu <bob.liu@xxxxxxxxxx> --- drivers/staging/zcache/zcache-main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c index dcceed2..0fe530b 100644 --- a/drivers/staging/zcache/zcache-main.c +++ b/drivers/staging/zcache/zcache-main.c @@ -1811,10 +1811,12 @@ static int zcache_comp_init(void) #else if (*zcache_comp_name != '\0') { ret = crypto_has_comp(zcache_comp_name, 0, 0); - if (!ret) + if (!ret) { pr_info("zcache: %s not supported\n", zcache_comp_name); - goto out; + goto out; + } + goto out_alloc; } if (!ret) strcpy(zcache_comp_name, "lzo"); @@ -1827,6 +1829,7 @@ static int zcache_comp_init(void) pr_info("zcache: using %s compressor\n", zcache_comp_name); /* alloc percpu transforms */ +out_alloc: ret = 0; zcache_comp_pcpu_tfms = alloc_percpu(struct crypto_comp *); if (!zcache_comp_pcpu_tfms) -- 1.7.10.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>