• Kees Cook's avatar
    ubsan: split "bounds" checker from other options · 277a1085
    Kees Cook authored
    In order to do kernel builds with the bounds checker individually
    available, introduce CONFIG_UBSAN_BOUNDS, with the remaining options under
    CONFIG_UBSAN_MISC.
    
    For example, using this, we can start to expand the coverage syzkaller is
    providing.  Right now, all of UBSan is disabled for syzbot builds because
    taken as a whole, it is too noisy.  This will let us focus on one feature
    at a time.
    
    For the bounds checker specifically, this provides a mechanism to
    eliminate an entire class of array overflows with close to zero
    performance overhead (I cannot measure a difference).  In my (mostly)
    defconfig, enabling bounds checking adds ~4200 checks to the kernel.
    Performance changes are in the noise, likely due to the branch predictors
    optimizing for the non-fail path.
    
    Some notes on the bounds checker:
    
    - it does not instrument {mem,str}*()-family functions, it only
      instruments direct indexed accesses (e.g. "foo[i]"). Dealing with
      the {mem,str}*()-family funct...
    277a1085
Makefile.ubsan 1.01 KB