diff mbox series

crypto: sun8i-ss - Use kfree_sensitive

Message ID 20210720130104.42867-1-wangborong@cdjrlc.com
State Accepted
Commit 192b722f3866d3fb45b9e6a6ecd02ff09f2aefbe
Headers show
Series crypto: sun8i-ss - Use kfree_sensitive | expand

Commit Message

Jason Wang July 20, 2021, 1:01 p.m. UTC
The kfree_sensitive is a kernel API to clear sensitive information
that should not be leaked to other future users of the same memory
objects and free the memory. Its function is the same as the
combination of memzero_explicit and kfree. Thus, we can replace the
combination APIs with the single kfree_sensitive API.

Signed-off-by: Jason Wang <wangborong@cdjrlc.com>
---
 drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

Comments

Herbert Xu July 30, 2021, 3:10 a.m. UTC | #1
On Tue, Jul 20, 2021 at 09:01:04PM +0800, Jason Wang wrote:
> The kfree_sensitive is a kernel API to clear sensitive information

> that should not be leaked to other future users of the same memory

> objects and free the memory. Its function is the same as the

> combination of memzero_explicit and kfree. Thus, we can replace the

> combination APIs with the single kfree_sensitive API.

> 

> Signed-off-by: Jason Wang <wangborong@cdjrlc.com>

> ---

>  drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c | 9 +++------

>  1 file changed, 3 insertions(+), 6 deletions(-)


Patch applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff mbox series

Patch

diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
index 3191527928e4..246a6782674c 100644
--- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
+++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-prng.c
@@ -20,8 +20,7 @@  int sun8i_ss_prng_seed(struct crypto_rng *tfm, const u8 *seed,
 	struct sun8i_ss_rng_tfm_ctx *ctx = crypto_rng_ctx(tfm);
 
 	if (ctx->seed && ctx->slen != slen) {
-		memzero_explicit(ctx->seed, ctx->slen);
-		kfree(ctx->seed);
+		kfree_sensitive(ctx->seed);
 		ctx->slen = 0;
 		ctx->seed = NULL;
 	}
@@ -48,8 +47,7 @@  void sun8i_ss_prng_exit(struct crypto_tfm *tfm)
 {
 	struct sun8i_ss_rng_tfm_ctx *ctx = crypto_tfm_ctx(tfm);
 
-	memzero_explicit(ctx->seed, ctx->slen);
-	kfree(ctx->seed);
+	kfree_sensitive(ctx->seed);
 	ctx->seed = NULL;
 	ctx->slen = 0;
 }
@@ -167,9 +165,8 @@  int sun8i_ss_prng_generate(struct crypto_rng *tfm, const u8 *src,
 		/* Update seed */
 		memcpy(ctx->seed, d + dlen, ctx->slen);
 	}
-	memzero_explicit(d, todo);
 err_free:
-	kfree(d);
+	kfree_sensitive(d);
 
 	return err;
 }