]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kasan: Remove references to folio in __kasan_mempool_poison_object()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 13 Nov 2025 00:09:29 +0000 (00:09 +0000)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 13 Nov 2025 19:23:58 +0000 (20:23 +0100)
In preparation for splitting struct slab from struct page and struct
folio, remove mentions of struct folio from this function.  There is a
mild improvement for large kmalloc objects as we will avoid calling
compound_head() for them.  We can discard the comment as using
PageLargeKmalloc() rather than !folio_test_slab() makes it obvious.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: kasan-dev <kasan-dev@googlegroups.com>
Link: https://patch.msgid.link/20251113000932.1589073-16-willy@infradead.org
Acked-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/kasan/common.c

index d4c14359feaf9d8fb4e92374ee9f9569c41d3574..38e8bb0bf32666d8ceefac626ebfc4d2d14d90e3 100644 (file)
@@ -520,24 +520,20 @@ void __kasan_mempool_unpoison_pages(struct page *page, unsigned int order,
 
 bool __kasan_mempool_poison_object(void *ptr, unsigned long ip)
 {
-       struct folio *folio = virt_to_folio(ptr);
+       struct page *page = virt_to_page(ptr);
        struct slab *slab;
 
-       /*
-        * This function can be called for large kmalloc allocation that get
-        * their memory from page_alloc. Thus, the folio might not be a slab.
-        */
-       if (unlikely(!folio_test_slab(folio))) {
+       if (unlikely(PageLargeKmalloc(page))) {
                if (check_page_allocation(ptr, ip))
                        return false;
-               kasan_poison(ptr, folio_size(folio), KASAN_PAGE_FREE, false);
+               kasan_poison(ptr, page_size(page), KASAN_PAGE_FREE, false);
                return true;
        }
 
        if (is_kfence_address(ptr))
                return true;
 
-       slab = folio_slab(folio);
+       slab = page_slab(page);
 
        if (check_slab_allocation(slab->slab_cache, ptr, ip))
                return false;