On Sun, Apr 10, 2022 at 02:07:57PM +0800, chinayanlei2002@xxxxxxx wrote: > From: Yan Lei <yan_lei@xxxxxxxxxxxxx> > > ---------------------------------------------------------- > Using uninitialized value "walk.flags" when calling "skcipher_walk_virt". > > Signed-off-by: Yan Lei <yan_lei@xxxxxxxxxxxxx> > --- > arch/x86/crypto/sm4_aesni_avx_glue.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/crypto/sm4_aesni_avx_glue.c b/arch/x86/crypto/sm4_aesni_avx_glue.c > index 7800f77d6..417e3bbfe 100644 > --- a/arch/x86/crypto/sm4_aesni_avx_glue.c > +++ b/arch/x86/crypto/sm4_aesni_avx_glue.c > @@ -40,7 +40,7 @@ static int sm4_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key, > > static int ecb_do_crypt(struct skcipher_request *req, const u32 *rkey) > { > - struct skcipher_walk walk; > + struct skcipher_walk walk = { 0 }; > unsigned int nbytes; > int err; > This caller is no different from any other caller of skcipher_walk_virt(). So this is not the proper place to fix this. Can you do the following instead? 1. Audit all callers of skcipher_walk_virt() to verify that they would be okay with walk->flags being initialized to 0. I.e., verify that no callers are intentionally initializing the flags to something else. 2. Update skcipher_walk_virt() to initialize walk->flags to 0, rather than doing 'walk->flags &= ~SKCIPHER_WALK_PHYS' as it does currently. - Eric