* Andrey Konovalov <[email protected]> wrote:
> The krealloc function checks where the same buffer was reused or a new one
> allocated by comparing kernel pointers. KHWASAN changes memory tag on the
> krealloc'ed chunk of memory and therefore also changes the pointer tag of
> the returned pointer. Therefore we need to perform comparison on untagged
> (with tags reset) pointers to check whether it's the same memory region or
> not.
>
> Signed-off-by: Andrey Konovalov <[email protected]>
> ---
> mm/slab_common.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/slab_common.c b/mm/slab_common.c
> index a33e61315ca6..5911f2194cf7 100644
> --- a/mm/slab_common.c
> +++ b/mm/slab_common.c
> @@ -1494,7 +1494,7 @@ void *krealloc(const void *p, size_t new_size, gfp_t
> flags)
> }
>
> ret = __do_krealloc(p, new_size, flags);
> - if (ret && p != ret)
> + if (ret && khwasan_reset_tag(p) != khwasan_reset_tag(ret))
> kfree(p);
Small nit:
If 'reset' here means an all zeroes tag (upper byte) then khwasan_clear_tag()
might be a slightly easier to read primitive?
Thanks,
Ingo
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm