From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752836AbdAZHcX (ORCPT ); Thu, 26 Jan 2017 02:32:23 -0500 Received: from out0-154.mail.aliyun.com ([140.205.0.154]:47683 "EHLO out0-154.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752505AbdAZHcX (ORCPT ); Thu, 26 Jan 2017 02:32:23 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R821e4;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e02c03294;MF=hillf.zj@alibaba-inc.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---.7WBTnW5_1485415918; Reply-To: "Hillf Danton" From: "Hillf Danton" To: "'Kirill A. Shutemov'" , "'Andrea Arcangeli'" , "'Hugh Dickins'" , "'Rik van Riel'" , "'Andrew Morton'" Cc: , References: <20170125182538.86249-1-kirill.shutemov@linux.intel.com> <20170125182538.86249-11-kirill.shutemov@linux.intel.com> In-Reply-To: <20170125182538.86249-11-kirill.shutemov@linux.intel.com> Subject: Re: [PATCHv2 10/12] mm: convert page_mapped_in_vma() to page_vma_mapped_walk() Date: Thu, 26 Jan 2017 15:31:58 +0800 Message-ID: <008e01d277a6$478dfd90$d6a9f8b0$@alibaba-inc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-Index: AQFWmgVcYe+EQEEgyoCxHJsQSyOPGQGh92vTojUHLMA= Content-Language: zh-cn Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On January 26, 2017 2:26 AM Kirill A. Shutemov wrote: > > For consistency, it worth converting all page_check_address() to > page_vma_mapped_walk(), so we could drop the former. > > Signed-off-by: Kirill A. Shutemov > --- Acked-by: Hillf Danton > mm/page_vma_mapped.c | 30 ++++++++++++++++++++++++++++++ > mm/rmap.c | 26 -------------------------- > 2 files changed, 30 insertions(+), 26 deletions(-) > > diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c > index 63168b4baf19..13929f2418b0 100644 > --- a/mm/page_vma_mapped.c > +++ b/mm/page_vma_mapped.c > @@ -179,3 +179,33 @@ next_pte: do { > } > } > } > + > +/** > + * page_mapped_in_vma - check whether a page is really mapped in a VMA > + * @page: the page to test > + * @vma: the VMA to test > + * > + * Returns 1 if the page is mapped into the page tables of the VMA, 0 > + * if the page is not mapped into the page tables of this VMA. Only > + * valid for normal file or anonymous VMAs. > + */ > +int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma) > +{ > + struct page_vma_mapped_walk pvmw = { > + .page = page, > + .vma = vma, > + .flags = PVMW_SYNC, > + }; > + unsigned long start, end; > + > + start = __vma_address(page, vma); > + end = start + PAGE_SIZE * (hpage_nr_pages(page) - 1); > + > + if (unlikely(end < vma->vm_start || start >= vma->vm_end)) > + return 0; > + pvmw.address = max(start, vma->vm_start); Nit: please see comment in the 05/12 patch in this series. > + if (!page_vma_mapped_walk(&pvmw)) > + return 0; > + page_vma_mapped_walk_done(&pvmw); > + return 1; > +}