Re: [PATCH 1/8] Replace memset() with memzero_explicit()

From: Greg Kroah-Hartman
Date: Tue Nov 16 2021 - 06:51:33 EST


On Tue, Nov 16, 2021 at 07:25:22PM +0800, Sandy Harris wrote:
> Replace memset(address,0,bytes) which may be optimised away
> with memzero_explicit(address,bytes) which resists
> such optimisation
>
> ---
> crypto/des_generic.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/crypto/des_generic.c b/crypto/des_generic.c
> index c85354a5e94c..105a32e7afea 100644
> --- a/crypto/des_generic.c
> +++ b/crypto/des_generic.c
> @@ -30,7 +30,7 @@ static int des_setkey(struct crypto_tfm *tfm, const u8 *key,
> err = 0;
> }
> if (err)
> - memset(dctx, 0, sizeof(*dctx));
> + memzero_explicit(dctx, sizeof(*dctx));
> return err;
> }
>
> @@ -62,7 +62,7 @@ static int des3_ede_setkey(struct crypto_tfm *tfm,
> const u8 *key,
> err = 0;
> }
> if (err)
> - memset(dctx, 0, sizeof(*dctx));
> + memzero_explicit(dctx, sizeof(*dctx));
> return err;
> }
>

Have you looked at the output of the compiler to see if this really is
needed or not?

And what exactly are you zeroing out that could be read afterward
somehow?

thanks,

greg k-h