Hello Justin, On Wed, Aug 14, 2024 at 02:05:49PM -0700, Justin Stitt wrote: > > I am seeing some signed-integer-overflow in percpu reference counters. > > it is brave of you to enable this sanitizer :>)
UBSAN has been somehow useful to pick some problems, so, I try to invest some time understanding what UBSAN, and see how much it can help when solving "unexpected" and misterious issues, which is something that challenges me. > > Is there a way to annotate the code to tell UBSAN that this overflow is > > expected and it shouldn't be reported? > Great question. > > 1) There exists some new-ish macros in overflow.h that perform > wrapping arithmetic without triggering sanitizer splats -- check out > the wrapping_* suite of macros. do they work for atomic? I suppose we also need to have them added to this_cpu_add(), this_cpu_sub() helpers. > 2) I have a Clang attribute in the works [1] that would enable you to > annotate expressions or types that are expected to wrap and will > therefore silence arithmetic overflow/truncation sanitizers. If you > think this could help make the kernel better then I'd appreciate a +1 > on that PR so it can get some more review from compiler people! Kees > and I have some other Clang features in the works that will allow for > better mitigation strategies for intended overflow in the kernel. Thanks. I've added a +1 there.
