ubsan: disable UBSAN_DIV_ZERO for clang
Building with UBSAN_DIV_ZERO with clang produces numerous fallthrough warnings from objtool. In the case of uncheck division, UBSAN_DIV_ZERO may introduce new control flow to check for division by zero. Because the result of the division is undefined, LLVM may optimize the control flow such that after the call to __ubsan_handle_divrem_overflow doesn't matter. If panic_on_warn was set, __ubsan_handle_divrem_overflow would panic. The problem is is that panic_on_warn is run time configurable. If it's disabled, then we cannot guarantee that we will be able to recover safely. Disable this config for clang until we can come up with a solution in LLVM. Link: https://github.com/ClangBuiltLinux/linux/issues/1657 Link: https://github.com/llvm/llvm-project/issues/56289 Link: https://lore.kernel.org/lkml/CAHk-=wj1qhf7y3VNACEexyp5EbkNpdcu_542k-xZpzmYLOjiCg@mail.gmail.com/ Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Acked-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b926f2adb0
commit
e5d523f1ae
|
@ -84,6 +84,9 @@ config UBSAN_SHIFT
|
||||||
config UBSAN_DIV_ZERO
|
config UBSAN_DIV_ZERO
|
||||||
bool "Perform checking for integer divide-by-zero"
|
bool "Perform checking for integer divide-by-zero"
|
||||||
depends on $(cc-option,-fsanitize=integer-divide-by-zero)
|
depends on $(cc-option,-fsanitize=integer-divide-by-zero)
|
||||||
|
# https://github.com/ClangBuiltLinux/linux/issues/1657
|
||||||
|
# https://github.com/llvm/llvm-project/issues/56289
|
||||||
|
depends on !CC_IS_CLANG
|
||||||
help
|
help
|
||||||
This option enables -fsanitize=integer-divide-by-zero which checks
|
This option enables -fsanitize=integer-divide-by-zero which checks
|
||||||
for integer division by zero. This is effectively redundant with the
|
for integer division by zero. This is effectively redundant with the
|
||||||
|
|
Loading…
Reference in New Issue