Re: [PATCH 1/2] kasan, mm: reset tag when access metadata

From: Marco Elver
Date: Tue Jul 27 2021 - 03:11:09 EST


+Cc Catalin

On Tue, 27 Jul 2021 at 06:00, Kuan-Ying Lee <Kuan-Ying.Lee@xxxxxxxxxxxx> wrote:
>
> Hardware tag-based KASAN doesn't use compiler instrumentation, we
> can not use kasan_disable_current() to ignore tag check.
>
> Thus, we need to reset tags when accessing metadata.
>
> Signed-off-by: Kuan-Ying Lee <Kuan-Ying.Lee@xxxxxxxxxxxx>

This looks reasonable, but the patch title is not saying this is
kmemleak, nor does the description say what the problem is. What
problem did you encounter? Was it a false positive?

Perhaps this should have been "kmemleak, kasan: reset pointer tags to
avoid false positives" ?

> ---
> mm/kmemleak.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/mm/kmemleak.c b/mm/kmemleak.c
> index 228a2fbe0657..73d46d16d575 100644
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -290,7 +290,7 @@ static void hex_dump_object(struct seq_file *seq,
> warn_or_seq_printf(seq, " hex dump (first %zu bytes):\n", len);
> kasan_disable_current();
> warn_or_seq_hex_dump(seq, DUMP_PREFIX_NONE, HEX_ROW_SIZE,
> - HEX_GROUP_SIZE, ptr, len, HEX_ASCII);
> + HEX_GROUP_SIZE, kasan_reset_tag((void *)ptr), len, HEX_ASCII);
> kasan_enable_current();
> }
>
> @@ -1171,7 +1171,7 @@ static bool update_checksum(struct kmemleak_object *object)
>
> kasan_disable_current();
> kcsan_disable_current();
> - object->checksum = crc32(0, (void *)object->pointer, object->size);
> + object->checksum = crc32(0, kasan_reset_tag((void *)object->pointer), object->size);
> kasan_enable_current();
> kcsan_enable_current();
>
> @@ -1246,7 +1246,7 @@ static void scan_block(void *_start, void *_end,
> break;
>
> kasan_disable_current();
> - pointer = *ptr;
> + pointer = *(unsigned long *)kasan_reset_tag((void *)ptr);
> kasan_enable_current();
>
> untagged_ptr = (unsigned long)kasan_reset_tag((void *)pointer);
> --
> 2.18.0
>
> --
> You received this message because you are subscribed to the Google Groups "kasan-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to kasan-dev+unsubscribe@xxxxxxxxxxxxxxxx.
> To view this discussion on the web visit https://groups.google.com/d/msgid/kasan-dev/20210727040021.21371-2-Kuan-Ying.Lee%40mediatek.com.