From d14850835c72fba8f67312106d0a9661331f110d Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Thu, 18 Mar 2021 13:44:59 -0700 Subject: [PATCH] ANDROID: mm: page_pinner: use put_user_page at seq_print_vma_name seq_print_vma_name uses get_user_pages_remote so it should use put_user_page to close false positive of page_pinner. Page pinned via pid 930, ts 38241618218 ns PFN 10351665 Block 10109 type CMA Flags 0x8000000000080034(uptodate|lru|active|swapbacked) __set_page_pinner+0x34/0xb4 try_grab_page+0x18c/0x1a0 follow_page_pte+0x2b4/0x4a8 follow_pmd_mask+0x180/0x4a4 __get_user_pages+0x1a0/0x434 __get_user_pages_remote+0xa4/0x28c get_user_pages_remote+0x20/0x48 seq_print_vma_name+0xa4/0x1f4 show_smap+0x114/0x25c seq_read_iter+0x2e8/0x3e8 seq_read+0xec/0x124 vfs_read+0xe0/0x2dc ksys_read+0x7c/0xec __arm64_sys_read+0x20/0x30 el0_svc_common+0xa4/0x180 do_el0_svc+0x28/0x88 Bug: 183414571 Signed-off-by: Minchan Kim Signed-off-by: Minchan Kim Change-Id: Ib81ccbc486877aab5e561ef516cedcbb172736f1 --- fs/proc/task_mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index be77f945b06f..9b5dc892c178 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -159,7 +159,7 @@ static void seq_print_vma_name(struct seq_file *m, struct vm_area_struct *vma) write_len = strnlen(kaddr + page_offset, len); seq_write(m, kaddr + page_offset, write_len); kunmap(page); - put_page(page); + put_user_page(page); /* if strnlen hit a null terminator then we're done */ if (write_len != len)