kasan: simplify assign_tag and set_tag calls
set_tag() already ignores the tag for the generic mode, so just call it as is. Add a check for the generic mode to assign_tag(), and simplify its call in ____kasan_kmalloc(). Link: https://lkml.kernel.org/r/121eeab245f98555862b289d2ba9269c868fbbcf.1606162397.git.andreyknvl@google.com Link: https://linux-review.googlesource.com/id/I18905ca78fb4a3d60e1a34a4ca00247272480438 Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Reviewed-by: Marco Elver <elver@google.com> Tested-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Branislav Rankov <Branislav.Rankov@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Evgenii Stepanov <eugenis@google.com> Cc: Kevin Brodsky <kevin.brodsky@arm.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d99f6a10c1
commit
1ef3133bd3
|
@ -233,6 +233,9 @@ void __kasan_poison_object_data(struct kmem_cache *cache, void *object)
|
|||
static u8 assign_tag(struct kmem_cache *cache, const void *object,
|
||||
bool init, bool keep_tag)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_KASAN_GENERIC))
|
||||
return 0xff;
|
||||
|
||||
/*
|
||||
* 1. When an object is kmalloc()'ed, two hooks are called:
|
||||
* kasan_slab_alloc() and kasan_kmalloc(). We assign the
|
||||
|
@ -275,8 +278,8 @@ void * __must_check __kasan_init_slab_obj(struct kmem_cache *cache,
|
|||
__memset(alloc_meta, 0, sizeof(*alloc_meta));
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_KASAN_SW_TAGS) || IS_ENABLED(CONFIG_KASAN_HW_TAGS))
|
||||
object = set_tag(object, assign_tag(cache, object, true, false));
|
||||
/* Tag is ignored in set_tag() without CONFIG_KASAN_SW/HW_TAGS */
|
||||
object = set_tag(object, assign_tag(cache, object, true, false));
|
||||
|
||||
return (void *)object;
|
||||
}
|
||||
|
@ -360,7 +363,7 @@ static void *____kasan_kmalloc(struct kmem_cache *cache, const void *object,
|
|||
{
|
||||
unsigned long redzone_start;
|
||||
unsigned long redzone_end;
|
||||
u8 tag = 0xff;
|
||||
u8 tag;
|
||||
|
||||
if (gfpflags_allow_blocking(flags))
|
||||
quarantine_reduce();
|
||||
|
@ -372,9 +375,7 @@ static void *____kasan_kmalloc(struct kmem_cache *cache, const void *object,
|
|||
KASAN_GRANULE_SIZE);
|
||||
redzone_end = round_up((unsigned long)object + cache->object_size,
|
||||
KASAN_GRANULE_SIZE);
|
||||
|
||||
if (IS_ENABLED(CONFIG_KASAN_SW_TAGS) || IS_ENABLED(CONFIG_KASAN_HW_TAGS))
|
||||
tag = assign_tag(cache, object, false, keep_tag);
|
||||
tag = assign_tag(cache, object, false, keep_tag);
|
||||
|
||||
/* Tag is ignored in set_tag without CONFIG_KASAN_SW/HW_TAGS */
|
||||
unpoison_range(set_tag(object, tag), size);
|
||||
|
|
Loading…
Reference in New Issue