Messages in this thread Patch in this message | | | From | Pasha Tatashin <> | Subject | [RFC 3/8] mm: Avoid using set_page_count() in set_page_recounted() | Date | Tue, 26 Oct 2021 17:38:17 +0000 |
| |
set_page_refcounted() converts a non-refcounted page that has (page->_refcount == 0) into a refcounted page by setting _refcount to 1,
Use page_ref_inc_return() instead to avoid unconditionally overwriting the _refcount value.
Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> --- mm/internal.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mm/internal.h b/mm/internal.h index cf3cb933eba3..cf345fac6894 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -91,9 +91,12 @@ static inline bool page_evictable(struct page *page) */ static inline void set_page_refcounted(struct page *page) { + int refcnt; + VM_BUG_ON_PAGE(PageTail(page), page); VM_BUG_ON_PAGE(page_ref_count(page), page); - set_page_count(page, 1); + refcnt = page_ref_inc_return(page); + VM_BUG_ON_PAGE(refcnt != 1, page); } extern unsigned long highest_memmap_pfn; -- 2.33.0.1079.g6e70778dc9-goog
| |