On Mon, 11 Mar 2024 at 22:48, Chang S. Bae <chang.seok.bae@xxxxxxxxx> wrote: > > The aesni_set_key() implementation has no error case, yet its prototype > specifies to return an error code. > > Modify the function prototype to return void and adjust the related code. > > Signed-off-by: Chang S. Bae <chang.seok.bae@xxxxxxxxx> > Cc: Eric Biggers <ebiggers@xxxxxxxxxx> > Cc: linux-crypto@xxxxxxxxxxxxxxx > Cc: x86@xxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > --- > Previously, Eric identified a similar case in my AES-KL code [1]. Then, > this parallel issue was realized. > > [1]: https://lore.kernel.org/lkml/20230607053558.GC941@sol.localdomain/ > --- > arch/x86/crypto/aesni-intel_asm.S | 5 ++--- > arch/x86/crypto/aesni-intel_glue.c | 6 +++--- > 2 files changed, 5 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S > index 411d8c83e88a..7ecb55cae3d6 100644 > --- a/arch/x86/crypto/aesni-intel_asm.S > +++ b/arch/x86/crypto/aesni-intel_asm.S > @@ -1820,8 +1820,8 @@ SYM_FUNC_START_LOCAL(_key_expansion_256b) > SYM_FUNC_END(_key_expansion_256b) > > /* > - * int aesni_set_key(struct crypto_aes_ctx *ctx, const u8 *in_key, > - * unsigned int key_len) > + * void aesni_set_key(struct crypto_aes_ctx *ctx, const u8 *in_key, > + * unsigned int key_len) > */ > SYM_FUNC_START(aesni_set_key) > FRAME_BEGIN > @@ -1926,7 +1926,6 @@ SYM_FUNC_START(aesni_set_key) > sub $0x10, UKEYP > cmp TKEYP, KEYP > jb .Ldec_key_loop > - xor AREG, AREG > #ifndef __x86_64__ > popl KEYP > #endif > diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c > index b1d90c25975a..c807b2f48ea3 100644 > --- a/arch/x86/crypto/aesni-intel_glue.c > +++ b/arch/x86/crypto/aesni-intel_glue.c > @@ -87,8 +87,8 @@ static inline void *aes_align_addr(void *addr) > return PTR_ALIGN(addr, AESNI_ALIGN); > } > > -asmlinkage int aesni_set_key(struct crypto_aes_ctx *ctx, const u8 *in_key, > - unsigned int key_len); > +asmlinkage void aesni_set_key(struct crypto_aes_ctx *ctx, const u8 *in_key, > + unsigned int key_len); > asmlinkage void aesni_enc(const void *ctx, u8 *out, const u8 *in); > asmlinkage void aesni_dec(const void *ctx, u8 *out, const u8 *in); > asmlinkage void aesni_ecb_enc(struct crypto_aes_ctx *ctx, u8 *out, > @@ -241,7 +241,7 @@ static int aes_set_key_common(struct crypto_aes_ctx *ctx, > err = aes_expandkey(ctx, in_key, key_len); > else { > kernel_fpu_begin(); > - err = aesni_set_key(ctx, in_key, key_len); > + aesni_set_key(ctx, in_key, key_len); This will leave 'err' uninitialized. > kernel_fpu_end(); > } > > -- > 2.34.1 > >