On Wed, May 31, 2023 at 3:12 AM Arnd Bergmann arnd@arndb.de wrote:
On Tue, May 30, 2023, at 21:20, Arnd Bergmann wrote:
On Tue, May 30, 2023, at 21:02, Arnd Bergmann wrote:
CONFIG_COMPILE_TEST=y forces a number of options to be hidden from build tests, which is generally super useful. The one that ended up hiding the stack growth above is CONFIG_GCOV_PROFILE_ALL. I'll try enabling it for a few builds to see what else shows up with it.
Update: you already pointed to UBSAN_SANITIZE_ALL causing this, I can confirm that this is also the case. With your config, the combination of CONFIG_GCOV_PROFILE_ALL and CONFIG_UBSAN_SANITIZE_ALL causes the compiler to completely mess up register allocation in this code, disabling either of the two gets it below the boundary.
After a night of randconfig builds with both UBSAN_SANITIZE_ALL and GCOV_PROFILE_ALL force-enabled, these are the ones I found, listing only the worst size for each function (using gcc-13.1).
In LLVM, a recent change we made was when the sanitizers are enabled, the GCOV instrumentation is not checked by the sanitizers as that results in excessive code growth. https://reviews.llvm.org/D150460
None of these show up without GCOV though:
crypto/twofish_common.c:683:1: error: the frame size of 2040 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] crypto/twofish_common.c:683:1: error: the frame size of 2336 bytes is larger than 2048 bytes [-Werror=frame-larger-than=] drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c:1589:1: error: the frame size of 1696 bytes is larger than 1400 bytes [-Werror=frame-larger-than=] drivers/media/platform/verisilicon/hantro_g2_vp9_dec.c:754:1: error: the frame size of 1260 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] drivers/staging/media/ipu3/ipu3-css-params.c:1206:1: error: the frame size of 1080 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] drivers/staging/media/rkvdec/rkvdec-vp9.c:1042:1: error: the frame size of 1660 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] drivers/staging/media/rkvdec/rkvdec-vp9.c:1042:1: error: the frame size of 2176 bytes is larger than 2048 bytes [-Werror=frame-larger-than=] drivers/staging/media/rkvdec/rkvdec-vp9.c:995:1: error: the frame size of 1656 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
Arnd