From: Konstantin Khlebnikov Date: Thu, 5 Apr 2018 23:23:24 +0000 (-0700) Subject: mm/page_ref: use atomic_set_release in page_ref_unfreeze X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=03f5d58fa42fb337b921e57f8e2c2d4df7df890d;p=openwrt%2Fstaging%2Fblogic.git mm/page_ref: use atomic_set_release in page_ref_unfreeze page_ref_unfreeze() has exactly that semantic. No functional changes: just minus one barrier and proper handling of PPro errata. Link: http://lkml.kernel.org/r/151844393004.210639.4672319312617954272.stgit@buzz Signed-off-by: Konstantin Khlebnikov Acked-by: Kirill A. Shutemov Cc: Michal Hocko Cc: Nicholas Piggin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/include/linux/page_ref.h b/include/linux/page_ref.h index 760d74a0e9a9..14d14beb1f7f 100644 --- a/include/linux/page_ref.h +++ b/include/linux/page_ref.h @@ -175,8 +175,7 @@ static inline void page_ref_unfreeze(struct page *page, int count) VM_BUG_ON_PAGE(page_count(page) != 0, page); VM_BUG_ON(count == 0); - smp_mb(); - atomic_set(&page->_refcount, count); + atomic_set_release(&page->_refcount, count); if (page_ref_tracepoint_active(__tracepoint_page_ref_unfreeze)) __page_ref_unfreeze(page, count); }