[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220204195852.1751729-2-willy@infradead.org>
Date: Fri, 4 Feb 2022 19:57:38 +0000
From: "Matthew Wilcox (Oracle)" <willy@...radead.org>
To: linux-mm@...ck.org
Cc: "Matthew Wilcox (Oracle)" <willy@...radead.org>,
linux-kernel@...r.kernel.org
Subject: [PATCH 01/75] mm/gup: Increment the page refcount before the pincount
We should always increase the refcount before doing anything else to
the page so that other page users see the elevated refcount first.
Signed-off-by: Matthew Wilcox (Oracle) <willy@...radead.org>
---
mm/gup.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/mm/gup.c b/mm/gup.c
index a9d4d724aef7..08020987dfc0 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -220,18 +220,18 @@ bool __must_check try_grab_page(struct page *page, unsigned int flags)
if (WARN_ON_ONCE(page_ref_count(page) <= 0))
return false;
- if (hpage_pincount_available(page))
- hpage_pincount_add(page, 1);
- else
- refs = GUP_PIN_COUNTING_BIAS;
-
/*
* Similar to try_grab_compound_head(): even if using the
* hpage_pincount_add/_sub() routines, be sure to
* *also* increment the normal page refcount field at least
* once, so that the page really is pinned.
*/
- page_ref_add(page, refs);
+ if (hpage_pincount_available(page)) {
+ page_ref_add(page, 1);
+ hpage_pincount_add(page, 1);
+ } else {
+ page_ref_add(page, GUP_PIN_COUNTING_BIAS);
+ }
mod_node_page_state(page_pgdat(page), NR_FOLL_PIN_ACQUIRED, 1);
}
--
2.34.1
Powered by blists - more mailing lists