Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S968381AbXFHHdS (ORCPT ); Fri, 8 Jun 2007 03:33:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S938333AbXFHHXU (ORCPT ); Fri, 8 Jun 2007 03:23:20 -0400 Received: from 216-99-217-87.dsl.aracnet.com ([216.99.217.87]:58275 "EHLO sous-sol.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S938281AbXFHHXS (ORCPT ); Fri, 8 Jun 2007 03:23:18 -0400 Message-Id: <20070608071539.568721000@sous-sol.org> References: <20070608071511.159309000@sous-sol.org> User-Agent: quilt/0.46-1 Date: Fri, 08 Jun 2007 00:15:21 -0700 From: Chris Wright To: linux-kernel@vger.kernel.org, stable@kernel.org Cc: Justin Forbes , Zwane Mwaikambo , "Theodore Ts'o" , Randy Dunlap , Dave Jones , Chuck Wolber , Chris Wedgwood , Michael Krufky , Chuck Ebbert , Domenico Andreoli , torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, Herbert Xu , Greg Kroah-Hartman Subject: [patch 10/32] CRYPTO: api: Read module pointer before freeing algorithm Content-Disposition: inline; filename=crypto-api-read-module-pointer-before-freeing-algorithm.patch Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1320 Lines: 43 -stable review patch. If anyone has any objections, please let us know. --------------------- From: Herbert Xu 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 Signed-off-by: Chris Wright Signed-off-by: Greg Kroah-Hartman --- crypto/api.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- linux-2.6.20.13.orig/crypto/api.c +++ linux-2.6.20.13/crypto/api.c @@ -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); -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/