• Arnd Bergmann's avatar
    crypto: aegis - fix badly optimized clang output · 97ac82d9
    Arnd Bergmann authored
    Clang sometimes makes very different inlining decisions from gcc.
    In case of the aegis crypto algorithms, it decides to turn the innermost
    primitives (and, xor, ...) into separate functions but inline most of
    the rest.
    
    This results in a huge amount of variables spilled on the stack, leading
    to rather slow execution as well as kernel stack usage beyond the 32-bit
    warning limit when CONFIG_KASAN is enabled:
    
    crypto/aegis256.c:123:13: warning: stack frame size of 648 bytes in function 'crypto_aegis256_encrypt_chunk' [-Wframe-larger-than=]
    crypto/aegis256.c:366:13: warning: stack frame size of 1264 bytes in function 'crypto_aegis256_crypt' [-Wframe-larger-than=]
    crypto/aegis256.c:187:13: warning: stack frame size of 656 bytes in function 'crypto_aegis256_decrypt_chunk' [-Wframe-larger-than=]
    crypto/aegis128l.c:135:13: warning: stack frame size of 832 bytes in function 'crypto_aegis128l_encrypt_chunk' [-Wframe-larger-than=]
    crypto/aegis128l.c:415:13: warning: stack frame size of 1480 bytes in function 'crypto_aegis128l_crypt' [-Wframe-larger-than=]
    crypto/aegis128l.c:218:13: warning: stack frame size of 848 bytes in function 'crypto_aegis128l_decrypt_chunk' [-Wframe-larger-than=]
    crypto/aegis128.c:116:13: warning: stack frame size of 584 bytes in function 'crypto_aegis128_encrypt_chunk' [-Wframe-larger-than=]
    crypto/aegis128.c:351:13: warning: stack frame size of 1064 bytes in function 'crypto_aegis128_crypt' [-Wframe-larger-than=]
    crypto/aegis128.c:177:13: warning: stack frame size of 592 bytes in function 'crypto_aegis128_decrypt_chunk' [-Wframe-larger-than=]
    
    Forcing the primitives to all get inlined avoids the issue and the
    resulting code is similar to what gcc produces.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    97ac82d9
aegis.h 2.06 KB