https://bugzilla.kernel.org/show_bug.cgi?id=216156

Michael Ellerman (mich...@ellerman.id.au) changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |mich...@ellerman.id.au

--- Comment #13 from Michael Ellerman (mich...@ellerman.id.au) ---
Thanks for the bisect.

I think I see what's happening. pmac_probe() is called before
mem_topology_setup(), so the min/max PFN variables are still zero. That causes
kmemleak_alloc_phys() to ignore the allocation, because the checks against the
PFN fail. Then kmemleak_no_scan() can't find the allocation and prints that
warning.

Can you try this, it moves the kmemleak_no_scan() call later:

diff --git a/arch/powerpc/sysdev/dart_iommu.c
b/arch/powerpc/sysdev/dart_iommu.c
index 98096bbfd62e..3883cb8a747e 100644
--- a/arch/powerpc/sysdev/dart_iommu.c
+++ b/arch/powerpc/sysdev/dart_iommu.c
@@ -243,9 +243,6 @@ static void __init allocate_dart(void)
        if (!dart_tablebase)
                panic("Failed to allocate 16MB below 2GB for DART table\n");

-       /* There is no point scanning the DART space for leaks*/
-       kmemleak_no_scan((void *)dart_tablebase);
-
        /* Allocate a spare page to map all invalid DART pages. We need to do
         * that to work around what looks like a problem with the HT bridge
         * prefetching into invalid pages and corrupting data
@@ -435,6 +432,9 @@ static int __init iommu_init_late_dart(void)
        if (!dart_tablebase)
                return 0;

+       // There is no point scanning the DART table for leaks.
+       kmemleak_no_scan(dart_tablebase);
+
        ppc_md.iommu_restore = iommu_dart_restore;

        return 0;

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

Reply via email to