• Arnd Bergmann's avatar
    kasan/test: avoid gcc warning for intentional overflow · e10aea10
    Arnd Bergmann authored
    The out-of-bounds test allocates an object that is three bytes too short
    in order to validate the bounds checking.  Starting with gcc-14, this
    causes a compile-time warning as gcc has grown smart enough to understand
    the sizeof() logic:
    
    mm/kasan/kasan_test.c: In function 'kmalloc_oob_16':
    mm/kasan/kasan_test.c:443:14: error: allocation of insufficient size '13' for type 'struct <anonymous>' with size '16' [-Werror=alloc-size]
      443 |         ptr1 = kmalloc(sizeof(*ptr1) - 3, GFP_KERNEL);
          |              ^
    
    Hide the actual computation behind a RELOC_HIDE() that ensures
    the compiler misses the intentional bug.
    
    Link: https://lkml.kernel.org/r/20240212111609.869266-1-arnd@kernel.org
    Fixes: 3f15801c ("lib: add kasan test module")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarAndrey Konovalov <andreyknvl@gmail.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Marco Elver <elver@google.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    e10aea10
kasan_test.c 52.9 KB