Re: KASAN vs realloc
From: Maciej Wieczor-Retman
Date: Fri Feb 06 2026 - 15:14:45 EST
>From what I see kasan_poison_last_granule() is called through:
__kasan_vrealloc()
--> __kasan_unpoison_vmalloc()
----> kasan_unpoison()
------> kasan_poison_last_granule()
and the arguments are "addr + old_size" and "new_size - old_size" so it looks
okay I think.
On 2026-02-06 at 11:07:12 -0800, Maciej Żenczykowski wrote:
>While looking at:
> https://android-review.git.corp.google.com/c/kernel/common/+/3939998
> UPSTREAM: mm/kasan: fix KASAN poisoning in vrealloc()
>
>I noticed a lack of symmetry - I'm not sure if it's a problem or not...
>but I'd have expected kasan_poison_last_granule() to be called
>regardless of whether the size shrunk or increased.
>
>It is of course possible this is handled automatically by
>__kasan_unpoison_vmalloc() - I haven't traced that deep,
>in general these functions seem to have a terrible api surface full of
>razors... with hidden assumptions about what is and is not granule
>aligned.
--
Kind regards
Maciej Wieczór-Retman