mm/slub, kunit: add SLAB_SKIP_KFENCE flag for cache creation
authorFeng Tang <feng.tang@intel.com>
Wed, 30 Nov 2022 08:54:50 +0000 (16:54 +0800)
committerVlastimil Babka <vbabka@suse.cz>
Wed, 30 Nov 2022 22:15:23 +0000 (23:15 +0100)
commit4d9dd4b0ce88072ca2368dfdd5c92bc078366e1e
tree25f4f4c3c17903f781f541e73fc3bb9e09921312
parent946fa0dbf2d8923a587f7348adf16563d59f1b3d
mm/slub, kunit: add SLAB_SKIP_KFENCE flag for cache creation

When kfence is enabled, the buffer allocated from the test case
could be from a kfence pool, and the operation could be also
caught and reported by kfence first, causing the case to fail.

With default kfence setting, this is very difficult to be triggered.
By changing CONFIG_KFENCE_NUM_OBJECTS from 255 to 16383, and
CONFIG_KFENCE_SAMPLE_INTERVAL from 100 to 5, the allocation from
kfence did hit 7 times in different slub_kunit cases out of 900
times of boot test.

To avoid this, initially we tried is_kfence_address() to check this
and repeated allocation till finding a non-kfence address. Vlastimil
Babka suggested SLAB_SKIP_KFENCE flag could be used to achieve this,
and better add a wrapper function for simplifying cache creation.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Reviewed-by: Marco Elver <elver@google.com>
Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
lib/slub_kunit.c