bootmem: use kmemleak_free_part_phys in free_bootmem_page
authorLiu Shixin <liushixin2@huawei.com>
Wed, 18 Oct 2023 10:29:47 +0000 (18:29 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 25 Oct 2023 23:47:13 +0000 (16:47 -0700)
Since kmemleak_alloc_phys() rather than kmemleak_alloc() was called from
memblock_alloc_range_nid(), kmemleak_free_part_phys() should be used to
delete kmemleak object in free_bootmem_page().  In debug mode, there are
following warning:

 kmemleak: Partially freeing unknown object at 0xffff97345aff7000 (size 4096)

Link: https://lkml.kernel.org/r/20231018102952.3339837-3-liushixin2@huawei.com
Fixes: 028725e73375 ("bootmem: remove the vmemmap pages from kmemleak in free_bootmem_page")
Signed-off-by: Liu Shixin <liushixin2@huawei.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Patrick Wang <patrick.wang.shcn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/bootmem_info.h

index e1a3c9c9754c5176fe8515e1112fd7e35dde4066..cffa38a73618fe0b451af9859116d54ae8b0df04 100644 (file)
@@ -60,7 +60,7 @@ static inline void get_page_bootmem(unsigned long info, struct page *page,
 
 static inline void free_bootmem_page(struct page *page)
 {
-       kmemleak_free_part(page_to_virt(page), PAGE_SIZE);
+       kmemleak_free_part_phys(PFN_PHYS(page_to_pfn(page)), PAGE_SIZE);
        free_reserved_page(page);
 }
 #endif