• P
    kfence: Add a module parameter to adjust kfence objects · 901b983c
    Peng Liu 提交于
    hulk inclusion
    category: feature
    bugzilla: https://gitee.com/openeuler/kernel/issues/I4V388
    CVE: NA
    
    --------------------------------
    
    KFENCE is designed to be enabled in production kernels, but it can
    be also useful in some debug situations. For machines with limited
    memory and CPU resources, KASAN is really hard to run. Fortunately,
    KFENCE can be a suitable candidate. For KFENCE running on a single
    machine, the possibility of discovering existed bugs will increase
    as the increasing of KFENCE objects, but this will cost more memory.
    In order to balance the possibility of discovering existed bugs and
    memory cost, KFENCE objects need to be adjusted according to memory
    resources for a compiled kernel Image. Add a module parameter to
    adjust KFENCE objects will make kfence to use in different machines
    with the same kernel Image.
    
    In short, the following reasons motivate us to add this parameter.
    1) In some debug situations, this will make kfence flexible.
    2) For some production machines with different memory and CPU size,
    this will reduce the kernel-Image-version burden.
    
    The main change is just using kfence_num_objects to replace config
    CONFIG_KFENCE_NUM_OBJECTS for dynamic configuration convenient. To
    make compatible, kfence_metadata and alloc_covered are alloced by
    memblock_alloc. Considering "cat /sys/kernel/debug/kfence/objects"
    will read kfence_metadata, the initialization of this fs should
    check whether kfence_metadata is successfully allocated.
    
    Unfortunately, dynamic allocation require the KFENCE pool size to
    be a configurable variable, which lead to additional instructions
    (eg, load) added to the fast path of the memory allocation. As a
    result, the performance will degrade. To avoid bad performance in
    production machine, an ugly macro is used to isolate the changes.
    Signed-off-by: NPeng Liu <liupeng256@huawei.com>
    Reviewed-by: NKefeng Wang <wangkefeng.wang@huawei.com>
    Reviewed-by: NCheng Jian <cj.chengjian@huawei.com>
    Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
    901b983c
kfence_test.c 24.0 KB