[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <yb3cniky6tpgwmdkp5652dzrbkkplkzsrywl76borcb7b4zmya@s4smffgybwgf>
Date: Thu, 04 Dec 2025 08:00:54 +0000
From: Maciej Wieczór-Retman <m.wieczorretman@...me>
To: Andrey Konovalov <andreyknvl@...il.com>
Cc: jiayuan.chen@...ux.dev, Andrey Ryabinin <ryabinin.a.a@...il.com>, Alexander Potapenko <glider@...gle.com>, Dmitry Vyukov <dvyukov@...gle.com>, Vincenzo Frascino <vincenzo.frascino@....com>, Andrew Morton <akpm@...ux-foundation.org>, Marco Elver <elver@...gle.com>, stable@...r.kernel.org, Maciej Wieczor-Retman <maciej.wieczor-retman@...el.com>, kasan-dev@...glegroups.com, linux-mm@...ck.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/2] kasan: Unpoison vms[area] addresses with a common tag
On 2025-12-04 at 01:43:36 +0100, Andrey Konovalov wrote:
>On Wed, Dec 3, 2025 at 5:24 PM Maciej Wieczór-Retman
><m.wieczorretman@...me> wrote:
>> I was sure the vms[0]->addr was already tagged (I recall checking this
>> so I'm not sure if something changed or my previous check was wrong) but
>> the problem here is that vms[0]->addr, vms[1]->addr ... were unpoisoned
>> with random addresses, specifically different random addresses. So then
>> later in the pcpu chunk code vms[1] related pointers would get the tag
>> from vms[0]->addr.
>>
>> So I think we still need a separate way to do __kasan_unpoison_vmalloc
>> with a specific tag.
>
>Why?
>
>Assuming KASAN_VMALLOC_KEEP_TAG takes the tag from the pointer, just do:
>
>tag = kasan_random_tag();
>for (area = 0; ...) {
> vms[area]->addr = set_tag(vms[area]->addr, tag);
> __kasan_unpoison_vmalloc(vms[area]->addr, vms[area]->size, flags |
>KASAN_VMALLOC_KEEP_TAG);
>}
>
>Or maybe even better:
>
>vms[0]->addr = __kasan_unpoison_vmalloc(vms[0]->addr, vms[0]->size, flags);
>tag = get_tag(vms[0]->addr);
>for (area = 1; ...) {
> vms[area]->addr = set_tag(vms[area]->addr, tag);
> __kasan_unpoison_vmalloc(vms[area]->addr, vms[area]->size, flags |
>KASAN_VMALLOC_KEEP_TAG);
>}
>
>This way we won't assign a random tag unless it's actually needed
>(i.e. when KASAN_VMALLOC_PROT_NORMAL is not provided; assuming we care
>to support that case).
Oh, right yes, that would work nicely. I thought putting these behind
helpers would end up clean but this is very neat too.
I suppose I'll wait for Jiayuan to update his patch and then I'll make
these changes on top of that.
Thanks! :)
--
Kind regards
Maciej Wieczór-Retman
Powered by blists - more mailing lists