From: Matthew Wilcox (Oracle) Date: Fri, 1 Oct 2021 02:31:48 +0000 (-0400) Subject: kasan: Fix tag for large allocations when using CONFIG_SLAB X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=030952377ac0a84a2bbe1ef78f10b4d242db38ed;p=users%2Fwilly%2Flinux.git kasan: Fix tag for large allocations when using CONFIG_SLAB If an object is allocated on a tail page of a multi-page slab, kasan will get the wrong tag because page->s_mem is NULL for tail pages. I'm not quite sure what the user-visible effect of this might be. Fixes: 7f94ffbc4c6a ("kasan: add hooks implementation for tag-based mode") Signed-off-by: Matthew Wilcox (Oracle) --- diff --git a/mm/kasan/common.c b/mm/kasan/common.c index 2baf121fb8c50..41779ad109cdb 100644 --- a/mm/kasan/common.c +++ b/mm/kasan/common.c @@ -298,7 +298,7 @@ static inline u8 assign_tag(struct kmem_cache *cache, /* For caches that either have a constructor or SLAB_TYPESAFE_BY_RCU: */ #ifdef CONFIG_SLAB /* For SLAB assign tags based on the object index in the freelist. */ - return (u8)obj_to_index(cache, virt_to_page(object), (void *)object); + return (u8)obj_to_index(cache, virt_to_head_page(object), (void *)object); #else /* * For SLUB assign a random tag during slab creation, otherwise reuse