mm/memory: convert do_shared_fault() to folios
authorSidhartha Kumar <sidhartha.kumar@oracle.com>
Thu, 6 Jul 2023 16:38:46 +0000 (09:38 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 18 Aug 2023 17:12:15 +0000 (10:12 -0700)
Saves three implicit calls to compound_head().

Link: https://lkml.kernel.org/r/20230706163847.403202-3-sidhartha.kumar@oracle.com
Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: ZhangPeng <zhangpeng362@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory.c

index a88e57d927bd255766a8c6877042d81579d69d48..7bebd6909199ae871568a5f3d837160ef0a0a428 100644 (file)
@@ -4602,21 +4602,24 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
 {
        struct vm_area_struct *vma = vmf->vma;
        vm_fault_t ret, tmp;
+       struct folio *folio;
 
        ret = __do_fault(vmf);
        if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY)))
                return ret;
 
+       folio = page_folio(vmf->page);
+
        /*
         * Check if the backing address space wants to know that the page is
         * about to become writable
         */
        if (vma->vm_ops->page_mkwrite) {
-               unlock_page(vmf->page);
+               folio_unlock(folio);
                tmp = do_page_mkwrite(vmf);
                if (unlikely(!tmp ||
                                (tmp & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))) {
-                       put_page(vmf->page);
+                       folio_put(folio);
                        return tmp;
                }
        }
@@ -4624,8 +4627,8 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
        ret |= finish_fault(vmf);
        if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE |
                                        VM_FAULT_RETRY))) {
-               unlock_page(vmf->page);
-               put_page(vmf->page);
+               folio_unlock(folio);
+               folio_put(folio);
                return ret;
        }