As the potential failure of memory allocation, kmalloc_array() may return
NULL and lead to NULL pointer dereference because of the usage of 'rctx->hw_context'.
Therefore, it is better to check the return value of kmalloc_array().
Signed-off-by: QintaoShen <[email protected]>
---
drivers/crypto/stm32/stm32-hash.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c
index d33006d..f1a1a13 100644
--- a/drivers/crypto/stm32/stm32-hash.c
+++ b/drivers/crypto/stm32/stm32-hash.c
@@ -970,7 +970,8 @@ static int stm32_hash_export(struct ahash_request *req, void *out)
rctx->hw_context = kmalloc_array(3 + HASH_CSR_REGISTER_NUMBER,
sizeof(u32),
GFP_KERNEL);
-
+ if (!rctx->hw_context)
+ return -ENOMEM;
preg = rctx->hw_context;
*preg++ = stm32_hash_read(hdev, HASH_IMR);
--
2.7.4
QintaoShen <[email protected]> wrote:
> As the potential failure of memory allocation, kmalloc_array() may return
> NULL and lead to NULL pointer dereference because of the usage of 'rctx->hw_context'.
>
> Therefore, it is better to check the return value of kmalloc_array().
>
> Signed-off-by: QintaoShen <[email protected]>
> ---
> drivers/crypto/stm32/stm32-hash.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c
> index d33006d..f1a1a13 100644
> --- a/drivers/crypto/stm32/stm32-hash.c
> +++ b/drivers/crypto/stm32/stm32-hash.c
> @@ -970,7 +970,8 @@ static int stm32_hash_export(struct ahash_request *req, void *out)
> rctx->hw_context = kmalloc_array(3 + HASH_CSR_REGISTER_NUMBER,
> sizeof(u32),
> GFP_KERNEL);
> -
> + if (!rctx->hw_context)
> + return -ENOMEM;
This patch introduces a runtime PM imbalance. Please fix.
Thanks,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt