diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 200e3b29aa22..25d70a001c51 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -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);