ANDROID: pagemap: do not leak physical addresses to non-privileged userspace
[firefly-linux-kernel-4.4.55.git] / fs / proc / task_mmu.c
index 200e3b29aa22d535a37b17e1d51f194a68e21c1e..25d70a001c519c1ec48bebee9b6c501f92b64497 100644 (file)
@@ -1396,6 +1396,16 @@ static int pagemap_open(struct inode *inode, struct file *file)
 {
        struct mm_struct *mm;
 
+#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_ANDROID)
+       /*
+        * For pass CTS
+        * FileSystemPermissionTest: Assert /proc/self/pagemap not readable
+        */
+       /* do not disclose physical addresses: attack vector */
+       if (!capable(CAP_SYS_ADMIN))
+               return -EPERM;
+#endif
+
        mm = proc_mem_open(inode, PTRACE_MODE_READ);
        if (IS_ERR(mm))
                return PTR_ERR(mm);