]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/blobdiff - mm/memory.c
Fix bug
[can-eth-gw-linux.git] / mm / memory.c
index 765377385632086e872058cb46fe7958dadd472f..db2e9e797a05fc67684ef735ff5623b7151ad478 100644 (file)
@@ -717,20 +717,6 @@ static inline bool is_cow_mapping(vm_flags_t flags)
        return (flags & (VM_SHARED | VM_MAYWRITE)) == VM_MAYWRITE;
 }
 
-#ifndef is_zero_pfn
-static inline int is_zero_pfn(unsigned long pfn)
-{
-       return pfn == zero_pfn;
-}
-#endif
-
-#ifndef my_zero_pfn
-static inline unsigned long my_zero_pfn(unsigned long addr)
-{
-       return zero_pfn;
-}
-#endif
-
 /*
  * vm_normal_page -- This function gets the "struct page" associated with a pte.
  *
@@ -1250,7 +1236,7 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
                                        BUG();
                                }
 #endif
-                               split_huge_page_pmd(vma->vm_mm, pmd);
+                               split_huge_page_pmd(vma, addr, pmd);
                        } else if (zap_huge_pmd(tlb, vma, pmd, addr))
                                goto next;
                        /* fall through */
@@ -1519,7 +1505,7 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
        }
        if (pmd_trans_huge(*pmd)) {
                if (flags & FOLL_SPLIT) {
-                       split_huge_page_pmd(mm, pmd);
+                       split_huge_page_pmd(vma, address, pmd);
                        goto split_fallthrough;
                }
                spin_lock(&mm->page_table_lock);
@@ -2794,13 +2780,8 @@ unlock:
 oom_free_new:
        page_cache_release(new_page);
 oom:
-       if (old_page) {
-               if (page_mkwrite) {
-                       unlock_page(old_page);
-                       page_cache_release(old_page);
-               }
+       if (old_page)
                page_cache_release(old_page);
-       }
        return VM_FAULT_OOM;
 
 unwritable_page: