mm: check virt_to_xxxx macro on 32bit OS [1/1]
authorTao Zeng <tao.zeng@amlogic.com>
Tue, 25 Dec 2018 11:17:25 +0000 (19:17 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Tue, 25 Dec 2018 11:20:00 +0000 (03:20 -0800)
PD#SWPL-1909

Problem:
virt_to_page may get bad input with virtual address
in high mem.

Solution:
Check input address of this macro and get a warn print

Verify:
p212

Change-Id: I69d81f7aac43f1865d3d1112263276603de166ce
Signed-off-by: Tao Zeng <tao.zeng@amlogic.com>
arch/arm/include/asm/memory.h

index 5ecadde..bde40c4 100644 (file)
@@ -263,9 +263,16 @@ static inline unsigned long __phys_to_virt(phys_addr_t x)
 
 #endif
 
+#ifdef CONFIG_AMLOGIC_MODIFY
+#define virt_to_pfn(kaddr) \
+       ({virt_check((unsigned long)kaddr); \
+        ((((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT) + \
+        PHYS_PFN_OFFSET); })
+#else
 #define virt_to_pfn(kaddr) \
        ((((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT) + \
         PHYS_PFN_OFFSET)
+#endif
 
 /*
  * These are *only* valid on the kernel direct mapped RAM memory.