]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] CRYPTO: api: Read module pointer before freeing algorithm
authorHerbert Xu <herbert@gondor.apana.org.au>
Sat, 19 May 2007 04:57:38 +0000 (14:57 +1000)
committerChris Wright <chrisw@sous-sol.org>
Mon, 11 Jun 2007 18:37:09 +0000 (11:37 -0700)
The function crypto_mod_put first frees the algorithm and then drops
the reference to its module.  Unfortunately we read the module pointer
which after freeing the algorithm and that pointer sits inside the
object that we just freed.

So this patch reads the module pointer out before we free the object.

Thanks to Luca Tettamanti for reporting this.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
crypto/api.c

index 8c446871cd5b13998294850338bb4ce93930f069..005d874462a612d3d1bb76467923c8e3165ff2bd 100644 (file)
@@ -48,8 +48,10 @@ EXPORT_SYMBOL_GPL(crypto_mod_get);
 
 void crypto_mod_put(struct crypto_alg *alg)
 {
+       struct module *module = alg->cra_module;
+
        crypto_alg_put(alg);
-       module_put(alg->cra_module);
+       module_put(module);
 }
 EXPORT_SYMBOL_GPL(crypto_mod_put);