]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: blake2b: effectively disable frame size warning
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 11 Aug 2022 00:59:11 +0000 (17:59 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 11 Aug 2022 00:59:11 +0000 (17:59 -0700)
commitfe249875803301040be0c2d594ef7e63e3ba2042
tree25f4a16ee4622baba46d04867237bcaca8e9538a
parent8c3365c8fd861cab66f117576b8f720e310fea5b
crypto: blake2b: effectively disable frame size warning

It turns out that gcc-12.1 has some nasty problems with register
allocation on a 32-bit x86 build for the 64-bit values used in the
generic blake2b implementation, where the pattern of 64-bit rotates and
xor operations ends up making gcc generate horrible code.

As a result it ends up with a ridiculously large stack frame for all the
spills it generates, resulting in the following build problem:

    crypto/blake2b_generic.c: In function â€˜blake2b_compress_one_generic’:
    crypto/blake2b_generic.c:109:1: error: the frame size of 2640 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]

on the same test-case, clang ends up generating a stack frame that is
just 296 bytes (and older gcc versions generate a slightly bigger one at
428 bytes - still nowhere near that almost 3kB monster stack frame of
gcc-12.1).

The issue is fixed both in mainline and the GCC 12 release branch [1],
but current release compilers end up failing the i386 allmodconfig build
due to this issue.

Disable the warning for now by simply raising the frame size for this
one file, just to keep this issue from having people turn off WERROR.

Link: https://lore.kernel.org/all/CAHk-=wjxqgeG2op+=W9sqgsWqCYnavC+SRfVyopu9-31S6xw+Q@mail.gmail.com/
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105930
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
crypto/Makefile