• Imran Khan's avatar
    kfence: add sysfs interface to disable kfence for selected slabs. · b84e04f1
    Imran Khan authored
    By default kfence allocation can happen for any slab object, whose size is
    up to PAGE_SIZE, as long as that allocation is the first allocation after
    expiration of kfence sample interval.  But in certain debugging scenarios
    we may be interested in debugging corruptions involving some specific slub
    objects like dentry or ext4_* etc.  In such cases limiting kfence for
    allocations involving only specific slub objects will increase the
    probablity of catching the issue since kfence pool will not be consumed by
    other slab objects.
    
    This patch introduces a sysfs interface
    '/sys/kernel/slab/<name>/skip_kfence' to disable kfence for specific
    slabs.  Having the interface work in this way does not impact
    current/default behavior of kfence and allows us to use kfence for
    specific slabs (when needed) as well.  The decision to skip/use kfence is
    taken depending on whether kmem_cache.flags has (newly introduced)
    SLAB_SKIP_KFENCE flag set or not.
    
    Link: https://lkml.kernel.org/r/20220814195353.2540848-1-imran.f.khan@oracle.comSigned-off-by: default avatarImran Khan <imran.f.khan@oracle.com>
    Reviewed-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: default avatarMarco Elver <elver@google.com>
    Reviewed-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    b84e04f1
core.c 34.5 KB