On 2025-12-03 at 16:53:04 +0100, Andrey Konovalov wrote:
On Tue, Dec 2, 2025 at 3:29 PM Maciej Wieczor-Retman m.wieczorretman@pm.me wrote:
From: Maciej Wieczor-Retman maciej.wieczor-retman@intel.com
...
diff --git a/mm/kasan/common.c b/mm/kasan/common.c index d4c14359feaf..7884ea7d13f9 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -28,6 +28,7 @@ #include <linux/string.h> #include <linux/types.h> #include <linux/bug.h> +#include <linux/vmalloc.h>
#include "kasan.h" #include "../slab.h" @@ -582,3 +583,19 @@ bool __kasan_check_byte(const void *address, unsigned long ip) } return true; }
+#ifdef CONFIG_KASAN_VMALLOC +void kasan_unpoison_vmap_areas(struct vm_struct **vms, int nr_vms,
kasan_vmalloc_flags_t flags)kasan_unpoison_vmap_areas() needs to be defined in inclunde/linux/kasan.h and call __kasan_unpoison_vmap_areas() when kasan_enabled() == true, similar to the other wrappers.
And check my comment for patch #2: with that, you should not need to add so many new __helpers: just __kasan_unpoison_vmalloc and __kasan_unpoison_vmap_areas should suffice.
Okay, I think I see what you mean. I was trying to avoid using __kasan_unpoison_vmalloc() here so that it compiled properly, but that was before I added the ifdef guard. Now there is not reason not to use it here.
I'll make the changes you mentioned.
Kind regards Maciej Wieczór-Retman
+{
unsigned long size;void *addr;int area;for (area = 0 ; area < nr_vms ; area++) {size = vms[area]->size;addr = vms[area]->addr;vms[area]->addr = __kasan_unpoison_vmap_areas(addr, size, flags);}+} +#endif