Browse Source

powerpc/kmemleak: Do not scan the DART table

The DART table allocation is registered to kmemleak via the
memblock_alloc_base() call. However, the DART table is later unmapped
and dart_tablebase VA no longer accessible. This patch tells kmemleak
not to scan this block and avoid an unhandled paging request.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Catalin Marinas 11 years ago
parent
commit
a1d23d5c94
1 changed files with 5 additions and 0 deletions
  1. 5 0
      arch/powerpc/sysdev/dart_iommu.c

+ 5 - 0
arch/powerpc/sysdev/dart_iommu.c

@@ -476,6 +476,11 @@ void __init alloc_dart_table(void)
 	 */
 	 */
 	dart_tablebase = (unsigned long)
 	dart_tablebase = (unsigned long)
 		__va(memblock_alloc_base(1UL<<24, 1UL<<24, 0x80000000L));
 		__va(memblock_alloc_base(1UL<<24, 1UL<<24, 0x80000000L));
+	/*
+	 * The DART space is later unmapped from the kernel linear mapping and
+	 * accessing dart_tablebase during kmemleak scanning will fault.
+	 */
+	kmemleak_no_scan((void *)dart_tablebase);
 
 
 	printk(KERN_INFO "DART table allocated at: %lx\n", dart_tablebase);
 	printk(KERN_INFO "DART table allocated at: %lx\n", dart_tablebase);
 }
 }