On Mon, Feb 05, 2024 at 12:29:21PM +0100, Marco Elver wrote: > On Mon, 5 Feb 2024 at 10:37, Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > > > In order to mitigate unexpected signed wrap-around[1], bring back the > > signed integer overflow sanitizer. It was removed in commit 6aaa31aeb9cf > > ("ubsan: remove overflow checks") because it was effectively a no-op > > when combined with -fno-strict-overflow (which correctly changes signed > > overflow from being "undefined" to being explicitly "wrap around"). > > > > Compilers are adjusting their sanitizers to trap wrap-around and to > > detecting common code patterns that should not be instrumented > > (e.g. "var + offset < var"). Prepare for this and explicitly rename > > the option from "OVERFLOW" to "WRAP". > > > > To annotate intentional wrap-around arithmetic, the add/sub/mul_wrap() > > helpers can be used for individual statements. At the function level, > > the __signed_wrap attribute can be used to mark an entire function as > > expecting its signed arithmetic to wrap around. For a single object file > > the Makefile can use "UBSAN_WRAP_SIGNED_target.o := n" to mark it as > > wrapping, and for an entire directory, "UBSAN_WRAP_SIGNED := n" can be > > used. > > > > Additionally keep these disabled under CONFIG_COMPILE_TEST for now. > > > > Link: https://github.com/KSPP/linux/issues/26 [1] > > Cc: Justin Stitt <justinstitt@xxxxxxxxxx> > > Cc: Marco Elver <elver@xxxxxxxxxx> > > Cc: Miguel Ojeda <ojeda@xxxxxxxxxx> > > Cc: Nathan Chancellor <nathan@xxxxxxxxxx> > > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > Cc: Hao Luo <haoluo@xxxxxxxxxx> > > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> > > Looks good. > > Reviewed-by: Marco Elver <elver@xxxxxxxxxx> Thanks! > And just to double check, you don't think we need 'depends on EXPERT' > (or DEBUG_KERNEL) to keep the noise down initially? Not for signed, no. It's almost a no-op like this. Once Clang and GCC support the wrap version (which will likely require changing the command line argument), we can re-evaluate. So far in my testing, I've not been able to trip it. I'm planning to get a local syzbot running with the wrap sanitizer later this week to see how noisy it gets (if at all). -- Kees Cook