On Sat, Jan 16, 2021 at 2:59 AM Eric Biggers <ebiggers(a)kernel.org> wrote:
On Sat, Jan 16, 2021 at 08:59:50AM +0800, kernel test robot wrote
Looks like the clang bug that causes large stack usage in this function
(
https://bugs.llvm.org/show_bug.cgi?id=45803 which is still unfixed) got
triggered again. Note that the function only has 264 bytes of local variables,
so there's no reason why it should use anywhere near 9776 bytes of stack space.
I'm not sure what we can do about this. Last time the solution was commit
0c0408e86dbe which randomly added a 'pragma nounroll' to the loop at the end.
Anyone have any better idea than randomly trying adding optimization pragmas and
seeing what makes the report go away?
Also this was reported with clang 12.0.0 which is a prerelease version, so I'm
not sure how much I'm supposed to care about this report.
I sent a workaround to disable UBSAN_UNSIGNED_OVERFLOW an
x86-32, after showing that this did not affect arm32, arm64 or x86-64:
27c287b41659 ("ubsan: disable unsigned-overflow check for i386")
As the report is for ppc64, it appears that this is not just specific to x86-32
after all. I have had no success in isolating the problem in clang, but I
did not try too hard either. I see this .config also enables
CONFIG_UBSAN_UNSIGNED_OVERFLOW=y, so it would be a
reasonable assumption that this is the same problem as on x86-32.
There is also another thread on CONFIG_UBSAN_UNSIGNED_OVERFLOW
causing BUILD_BUG_ON() failures.
Arnd