From: Matthew Wilcox (Oracle) Date: Fri, 7 Jan 2022 19:19:39 +0000 (-0500) Subject: mm/gup: Remove hpage_pincount_sub() X-Git-Tag: v6.1-rc5~1777^2~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6315d8a23ce308433cf615e435ca2ee2aee7d11c;p=platform%2Fkernel%2Flinux-starfive.git mm/gup: Remove hpage_pincount_sub() Move the assertion (and correct it to be a cheaper variant), and inline the atomic_sub() operation. Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Christoph Hellwig Reviewed-by: John Hubbard Reviewed-by: Jason Gunthorpe Reviewed-by: William Kucharski --- diff --git a/mm/gup.c b/mm/gup.c index 299b787..1809dc0 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -29,14 +29,6 @@ struct follow_page_context { unsigned int page_mask; }; -static void hpage_pincount_sub(struct page *page, int refs) -{ - VM_BUG_ON_PAGE(!hpage_pincount_available(page), page); - VM_BUG_ON_PAGE(page != compound_head(page), page); - - atomic_sub(refs, compound_pincount_ptr(page)); -} - /* Equivalent to calling put_page() @refs times. */ static void put_page_refs(struct page *page, int refs) { @@ -169,12 +161,13 @@ __maybe_unused struct page *try_grab_compound_head(struct page *page, static void put_compound_head(struct page *page, int refs, unsigned int flags) { + VM_BUG_ON_PAGE(PageTail(page), page); + if (flags & FOLL_PIN) { mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_RELEASED, refs); - if (hpage_pincount_available(page)) - hpage_pincount_sub(page, refs); + atomic_sub(refs, compound_pincount_ptr(page)); else refs *= GUP_PIN_COUNTING_BIAS; }