crypto_alloc_tfm() returns an error-valued pointer in case of failure,
which must not be translated using __crypto_shash_cast().

Currently everything works fine because __crypto_shash_cast() is a no-op
(crypto_shash.base is at offset zero).

Signed-off-by: Geert Uytterhoeven <geert.uytterhoe...@sonycom.com>
---
 crypto/shash.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/crypto/shash.c b/crypto/shash.c
index 13a0dc1..fbc6993 100644
--- a/crypto/shash.c
+++ b/crypto/shash.c
@@ -480,8 +480,12 @@ static const struct crypto_type crypto_shash_type = {
 struct crypto_shash *crypto_alloc_shash(const char *alg_name, u32 type,
                                        u32 mask)
 {
-       return __crypto_shash_cast(
-               crypto_alloc_tfm(alg_name, &crypto_shash_type, type, mask));
+       struct crypto_tfm *tfm = crypto_alloc_tfm(alg_name, &crypto_shash_type,
+                                                 type, mask);
+       if (IS_ERR(tfm))
+               return ERR_CAST(tfm);
+
+       return __crypto_shash_cast(tfm);
 }
 EXPORT_SYMBOL_GPL(crypto_alloc_shash);
 
-- 
1.6.0.4

With kind regards,

Geert Uytterhoeven
Software Architect

Sony Techsoft Centre Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium

Phone:    +32 (0)2 700 8453
Fax:      +32 (0)2 700 8622
E-mail:   geert.uytterhoe...@sonycom.com
Internet: http://www.sony-europe.com/

A division of Sony Europe (Belgium) N.V.
VAT BE 0413.825.160 · RPR Brussels
Fortis · BIC GEBABEBB · IBAN BE41293037680010
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to