Skip to content
  • Andrey Konovalov's avatar
    kasan: clean up metadata allocation and usage · f277deb3
    Andrey Konovalov authored and Vincenzo Frascino's avatar Vincenzo Frascino committed
    
    
    KASAN marks caches that are sanitized with the SLAB_KASAN cache flag.
    Currently if the metadata that is appended after the object (stores e.g.
    stack trace ids) doesn't fit into KMALLOC_MAX_SIZE (can only happen with
    SLAB, see the comment in the patch), KASAN turns off sanitization
    completely.
    
    With this change sanitization of the object data is always enabled.
    However the metadata is only stored when it fits. Instead of checking for
    SLAB_KASAN flag accross the code to find out whether the metadata is
    there, use cache->kasan_info.alloc/free_meta_offset. As 0 can be a valid
    value for free_meta_offset, introduce KASAN_NO_FREE_META as an indicator
    that the free metadata is missing.
    
    Along the way rework __kasan_cache_create() and add claryfying comments.
    
    Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Link: https://linux-review.googlesource.com/id/Icd947e2bea054cb5cfbdc6cf6652227d97032dcb
    f277deb3