[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aXNBTJzIKeRjQM6O@wieczorr-mobl1.localdomain>
Date: Fri, 23 Jan 2026 09:37:40 +0000
From: Maciej Wieczor-Retman <m.wieczorretman@...me>
To: Mike Rapoport <rppt@...nel.org>
Cc: Andrew Morton <akpm@...ux-foundation.org>, Uladzislau Rezki <urezki@...il.com>, Maciej Wieczor-Retman <maciej.wieczor-retman@...el.com>, Alexander Potapenko <glider@...gle.com>, linux-mm@...ck.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v9 06/13] mm/execmem: Untag addresses in EXECMEM_ROX related pointer arithmetic
Thanks!
Kind regards
Maciej Wieczór-Retman
On 2026-01-22 at 12:32:33 +0200, Mike Rapoport wrote:
>On Tue, Jan 20, 2026 at 02:41:43PM +0000, Maciej Wieczor-Retman wrote:
>> From: Maciej Wieczor-Retman <maciej.wieczor-retman@...el.com>
>>
>> ARCH_HAS_EXECMEM_ROX was re-enabled in x86 at Linux 6.14 release.
>> vm_reset_perms() calculates range's start and end addresses using min()
>> and max() functions. To do that it compares pointers but, with KASAN
>> software tags mode enabled, some are tagged - addr variable is, while
>> start and end variables aren't. This can cause the wrong address to be
>> chosen and result in various errors in different places.
>>
>> Reset tags in the address used as function argument in min(), max().
>>
>> execmem_cache_add() adds tagged pointers to a maple tree structure,
>> which then are incorrectly compared when walking the tree. That results
>> in different pointers being returned later and page permission violation
>> errors panicking the kernel.
>>
>> Reset tag of the address range inserted into the maple tree inside
>> execmem_vmalloc() which then gets propagated to execmem_cache_add().
>>
>> Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@...el.com>
>> Acked-by: Alexander Potapenko <glider@...gle.com>
>
>Acked-by: Mike Rapoport (Microsoft) <rppt@...nel.org>
>
>--
>Sincerely yours,
>Mike.
Powered by blists - more mailing lists