lkml.org 
[lkml]   [2020]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH mm v3 15/19] kasan: simplify assign_tag and set_tag calls
    From
    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().

    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Marco Elver <elver@google.com>
    Link: https://linux-review.googlesource.com/id/I18905ca78fb4a3d60e1a34a4ca00247272480438
    ---
    mm/kasan/common.c | 13 +++++++------
    1 file changed, 7 insertions(+), 6 deletions(-)

    diff --git a/mm/kasan/common.c b/mm/kasan/common.c
    index 1a88e4005181..821678a58ac6 100644
    --- a/mm/kasan/common.c
    +++ b/mm/kasan/common.c
    @@ -234,6 +234,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
    @@ -276,8 +279,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;
    }
    @@ -364,7 +367,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();
    @@ -379,9 +382,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);
    --
    2.29.2.299.gdc1121823c-goog
    \
     
     \ /
      Last update: 2020-11-13 23:22    [W:6.069 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site