Add stack frames to AES-NI x86_64 assembly.
authorjsing <jsing@openbsd.org>
Sat, 30 Jul 2022 13:51:31 +0000 (13:51 +0000)
committerjsing <jsing@openbsd.org>
Sat, 30 Jul 2022 13:51:31 +0000 (13:51 +0000)
commit5c104365a212209d22913ebf7fddd1d52f8c2379
tree5ec73d8d3b92ce61e206f6842d4fee925113d708
parentca0a2a13f9f695d3c424e46d6e6b9bf04e86e413
Add stack frames to AES-NI x86_64 assembly.

The current AES-NI x86_64 assembly does some strange, although valid
things, such as making internal function calls without creating stack
frames. In this case, the return address lands in the red zone (which it
allows for when making use of the stack) and everything works as expected.

However, this trips a false positive in valgrind, which seems to think that
any data saved on the stack prior to the internal function call is now
"undefined" once the function returns.

Avoid this by actually using stack frames - this brings in most of
6a40ebe86b4 from OpenSSL, omitting the unnecessary explicit stack alignment
(which was apparently added so this code could be used in the Linux kernel
with an incorrectly aligned stack).

Valgrind issue reported by Steffen Jaeckel (@sjaeckel), found via
libstrophe unit tests.

ok tb@
lib/libcrypto/aes/asm/aesni-x86_64.pl