mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 05:44:45 +01:00
On an allmodconfig kernel compiled with Clang, objtool is segfaulting in
drivers/scsi/qla2xxx/qla2xxx.o due to a stack overflow in
validate_branch().
Due in part to KASAN being enabled, the qla2xxx code has a large number
of conditional jumps, causing objtool to go quite deep in its recursion.
By far the biggest offender of stack usage is the recently added
'prev_state' stack variable in validate_insn(), coming in at 328 bytes.
Move that variable (and its tracing usage) to handle_insn_ops() and make
handle_insn_ops() noinline to keep its stack frame outside the recursive
call chain.
Reported-by: Nathan Chancellor <nathan@kernel.org>
Fixes:
|
||
|---|---|---|
| .. | ||
| arch | ||
| Documentation | ||
| include/objtool | ||
| .gitignore | ||
| Build | ||
| builtin-check.c | ||
| builtin-klp.c | ||
| check.c | ||
| disas.c | ||
| elf.c | ||
| klp-diff.c | ||
| klp-post-link.c | ||
| Makefile | ||
| noreturns.h | ||
| objtool.c | ||
| orc_dump.c | ||
| orc_gen.c | ||
| special.c | ||
| sync-check.sh | ||
| trace.c | ||
| weak.c | ||