linux/arch/x86/crypto
Josh Poimboeuf 0e14ef3866 crypto: x86/sm4 - Fix frame pointer stack corruption
sm4_aesni_avx_crypt8() sets up the frame pointer (which includes pushing
RBP) before doing a conditional sibling call to sm4_aesni_avx_crypt4(),
which sets up an additional frame pointer.  Things will not go well when
sm4_aesni_avx_crypt4() pops only the innermost single frame pointer and
then tries to return to the outermost frame pointer.

Sibling calls need to occur with an empty stack frame.  Do the
conditional sibling call *before* setting up the stack pointer.

This fixes the following warning:

  arch/x86/crypto/sm4-aesni-avx-asm_64.o: warning: objtool: sm4_aesni_avx_crypt8()+0x8: sibling call from callable instruction with modified stack frame

Fixes: a7ee22ee14 ("crypto: x86/sm4 - add AES-NI/AVX/x86_64 implementation")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Arnd Bergmann <arnd@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2021-09-24 15:58:50 +08:00
..
.gitignore
aegis128-aesni-asm.S
aegis128-aesni-glue.c
aes_ctrby8_avx-x86_64.S crypto: x86 - Remove include/asm/inst.h 2020-07-16 21:49:07 +10:00
aesni-intel_asm.S crypto: x86/aes-ni-xts - rewrite and drop indirections via glue helper 2021-01-08 15:39:47 +11:00
aesni-intel_avx-x86_64.S x86/crypto/aesni-intel_avx: Standardize stack alignment prologue 2021-04-19 12:36:34 -05:00
aesni-intel_glue.c crypto: aesni - xts_crypt() return if walk.nbytes is 0 2021-08-27 16:30:19 +08:00
blake2s-core.S
blake2s-glue.c crypto: blake2s - share the "shash" API boilerplate code 2021-01-03 08:41:38 +11:00
blowfish_glue.c crypto: x86/blowfish - drop CTR mode implementation 2021-01-14 17:10:29 +11:00
blowfish-x86_64-asm_64.S
camellia_aesni_avx2_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
camellia_aesni_avx_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
camellia_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
camellia-aesni-avx2-asm_64.S x86/crypto/camellia-aesni-avx2: Unconditionally allocate stack buffer 2021-04-19 12:36:34 -05:00
camellia-aesni-avx-asm_64.S crypto: x86/camellia - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
camellia-x86_64-asm_64.S
camellia.h crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
cast5_avx_glue.c crypto: x86/cast5 - drop dependency on glue helper 2021-01-14 17:10:29 +11:00
cast5-avx-x86_64-asm_64.S
cast6_avx_glue.c crypto: x86/cast6 - drop dependency on glue helper 2021-01-14 17:10:29 +11:00
cast6-avx-x86_64-asm_64.S crypto: x86/cast6 - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
chacha_glue.c crypto: algapi - Remove skbuff.h inclusion 2020-08-20 14:04:28 +10:00
chacha-avx2-x86_64.S
chacha-avx512vl-x86_64.S
chacha-ssse3-x86_64.S crypto: x86/chacha-sse3 - use unaligned loads for state array 2020-07-16 21:49:04 +10:00
crc32-pclmul_asm.S crypto: x86 - Remove include/asm/inst.h 2020-07-16 21:49:07 +10:00
crc32-pclmul_glue.c x86: Fix various typos in comments, take #2 2021-03-21 23:50:28 +01:00
crc32c-intel_glue.c crypto: x86/crc32c-intel - Use CRC32 mnemonic 2020-08-21 14:45:28 +10:00
crc32c-pcl-intel-asm_64.S x86/crypto/crc32c-pcl-intel: Standardize jump table 2021-04-19 12:36:34 -05:00
crct10dif-pcl-asm_64.S
crct10dif-pclmul_glue.c
curve25519-x86_64.c crypto: x86/curve25519 - fix cpu feature checking logic in mod_exit 2021-06-11 15:03:29 +08:00
des3_ede_glue.c crypto: x86/des - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
des3_ede-asm_64.S
ecb_cbc_helpers.h crypto: x86 - add some helper macros for ECB and CBC modes 2021-01-14 17:10:29 +11:00
ghash-clmulni-intel_asm.S crypto: x86 - Remove include/asm/inst.h 2020-07-16 21:49:07 +10:00
ghash-clmulni-intel_glue.c
glue_helper-asm-avx2.S crypto: x86/glue-helper - drop CTR helper routines 2021-01-14 17:10:28 +11:00
glue_helper-asm-avx.S crypto: x86/glue-helper - drop CTR helper routines 2021-01-14 17:10:28 +11:00
Makefile crypto: x86/sm4 - add AES-NI/AVX2/x86_64 implementation 2021-08-27 16:30:18 +08:00
nh-avx2-x86_64.S
nh-sse2-x86_64.S
nhpoly1305-avx2-glue.c crypto: algapi - Remove skbuff.h inclusion 2020-08-20 14:04:28 +10:00
nhpoly1305-sse2-glue.c crypto: algapi - Remove skbuff.h inclusion 2020-08-20 14:04:28 +10:00
poly1305_glue.c crypto: poly1305 - fix poly1305_core_setkey() declaration 2021-04-02 18:28:12 +11:00
poly1305-x86_64-cryptogams.pl crypto: x86/poly1305 - Use TEST %reg,%reg instead of CMP $0,%reg 2020-12-04 18:13:16 +11:00
serpent_avx2_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
serpent_avx_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
serpent_sse2_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
serpent-avx2-asm_64.S crypto: x86/serpent - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
serpent-avx-x86_64-asm_64.S crypto: x86/serpent - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
serpent-avx.h crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
serpent-sse2-i586-asm_32.S
serpent-sse2-x86_64-asm_64.S
serpent-sse2.h crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
sha1_avx2_x86_64_asm.S x86/crypto/sha1_avx2: Standardize stack alignment prologue 2021-04-19 12:36:35 -05:00
sha1_ni_asm.S x86/crypto/sha_ni: Standardize stack alignment prologue 2021-04-19 12:36:35 -05:00
sha1_ssse3_asm.S
sha1_ssse3_glue.c crypto: sha - split sha.h into sha1.h and sha2.h 2020-11-20 14:45:33 +11:00
sha256_ni_asm.S
sha256_ssse3_glue.c crypto: sha - split sha.h into sha1.h and sha2.h 2020-11-20 14:45:33 +11:00
sha256-avx2-asm.S x86/crypto/sha256-avx2: Standardize stack alignment prologue 2021-04-19 12:36:36 -05:00
sha256-avx-asm.S
sha256-ssse3-asm.S
sha512_ssse3_glue.c crypto: sha - split sha.h into sha1.h and sha2.h 2020-11-20 14:45:33 +11:00
sha512-avx2-asm.S x86/crypto/sha512-avx2: Standardize stack alignment prologue 2021-04-19 12:36:36 -05:00
sha512-avx-asm.S x86/crypto/sha512-avx: Standardize stack alignment prologue 2021-04-19 12:36:36 -05:00
sha512-ssse3-asm.S x86/crypto/sha512-ssse3: Standardize stack alignment prologue 2021-04-19 12:36:37 -05:00
sm4_aesni_avx2_glue.c crypto: x86/sm4 - add AES-NI/AVX2/x86_64 implementation 2021-08-27 16:30:18 +08:00
sm4_aesni_avx_glue.c crypto: x86/sm4 - export reusable AESNI/AVX functions 2021-08-27 16:30:18 +08:00
sm4-aesni-avx2-asm_64.S crypto: x86/sm4 - add AES-NI/AVX2/x86_64 implementation 2021-08-27 16:30:18 +08:00
sm4-aesni-avx-asm_64.S crypto: x86/sm4 - Fix frame pointer stack corruption 2021-09-24 15:58:50 +08:00
sm4-avx.h crypto: x86/sm4 - export reusable AESNI/AVX functions 2021-08-27 16:30:18 +08:00
twofish_avx_glue.c crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00
twofish_glue_3way.c x86: Fix various typos in comments 2021-03-18 15:31:53 +01:00
twofish_glue.c
twofish-avx-x86_64-asm_64.S crypto: x86/twofish - drop CTR mode implementation 2021-01-14 17:10:28 +11:00
twofish-i586-asm_32.S
twofish-x86_64-asm_64-3way.S x86: Fix various typos in comments, take #2 2021-03-21 23:50:28 +01:00
twofish-x86_64-asm_64.S
twofish.h crypto: x86 - use local headers for x86 specific shared declarations 2021-01-14 17:10:30 +11:00