The patch titled Subject: mm: remove src/dst mm parameter in copy_page_range() has been added to the -mm tree. Its filename is mm-remove-src-dst-mm-parameter-in-copy_page_range.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mm-remove-src-dst-mm-parameter-in-copy_page_range.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/mm-remove-src-dst-mm-parameter-in-copy_page_range.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Peter Xu <peterx@xxxxxxxxxx> Subject: mm: remove src/dst mm parameter in copy_page_range() Both of the mm pointers are not needed after commit 7a4830c380f3 ("mm/fork: Pass new vma pointer into copy_page_range()"). Link: https://lkml.kernel.org/r/20200930204950.6668-1-peterx@xxxxxxxxxx Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> Reported-by: Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/mm.h | 3 +-- kernel/fork.c | 2 +- mm/memory.c | 43 ++++++++++++++++++++++--------------------- 3 files changed, 24 insertions(+), 24 deletions(-) --- a/include/linux/mm.h~mm-remove-src-dst-mm-parameter-in-copy_page_range +++ a/include/linux/mm.h @@ -1645,8 +1645,7 @@ struct mmu_notifier_range; void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, unsigned long end, unsigned long floor, unsigned long ceiling); -int copy_page_range(struct mm_struct *dst, struct mm_struct *src, - struct vm_area_struct *vma, struct vm_area_struct *new); +int copy_page_range(struct vm_area_struct *vma, struct vm_area_struct *new); int follow_pte_pmd(struct mm_struct *mm, unsigned long address, struct mmu_notifier_range *range, pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp); --- a/kernel/fork.c~mm-remove-src-dst-mm-parameter-in-copy_page_range +++ a/kernel/fork.c @@ -589,7 +589,7 @@ static __latent_entropy int dup_mmap(str mm->map_count++; if (!(tmp->vm_flags & VM_WIPEONFORK)) - retval = copy_page_range(mm, oldmm, mpnt, tmp); + retval = copy_page_range(mpnt, tmp); if (tmp->vm_ops && tmp->vm_ops->open) tmp->vm_ops->open(tmp); --- a/mm/memory.c~mm-remove-src-dst-mm-parameter-in-copy_page_range +++ a/mm/memory.c @@ -957,11 +957,12 @@ page_copy_prealloc(struct mm_struct *src return new_page; } -static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, - pmd_t *dst_pmd, pmd_t *src_pmd, struct vm_area_struct *vma, - struct vm_area_struct *new, +static int copy_pte_range(pmd_t *dst_pmd, pmd_t *src_pmd, + struct vm_area_struct *vma, struct vm_area_struct *new, unsigned long addr, unsigned long end) { + struct mm_struct *dst_mm = new->vm_mm; + struct mm_struct *src_mm = vma->vm_mm; pte_t *orig_src_pte, *orig_dst_pte; pte_t *src_pte, *dst_pte; spinlock_t *src_ptl, *dst_ptl; @@ -1061,11 +1062,12 @@ out: return ret; } -static inline int copy_pmd_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, - pud_t *dst_pud, pud_t *src_pud, struct vm_area_struct *vma, - struct vm_area_struct *new, +static inline int copy_pmd_range(pud_t *dst_pud, pud_t *src_pud, + struct vm_area_struct *vma, struct vm_area_struct *new, unsigned long addr, unsigned long end) { + struct mm_struct *dst_mm = new->vm_mm; + struct mm_struct *src_mm = vma->vm_mm; pmd_t *src_pmd, *dst_pmd; unsigned long next; @@ -1089,18 +1091,18 @@ static inline int copy_pmd_range(struct } if (pmd_none_or_clear_bad(src_pmd)) continue; - if (copy_pte_range(dst_mm, src_mm, dst_pmd, src_pmd, - vma, new, addr, next)) + if (copy_pte_range(dst_pmd, src_pmd, vma, new, addr, next)) return -ENOMEM; } while (dst_pmd++, src_pmd++, addr = next, addr != end); return 0; } -static inline int copy_pud_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, - p4d_t *dst_p4d, p4d_t *src_p4d, struct vm_area_struct *vma, - struct vm_area_struct *new, +static inline int copy_pud_range(p4d_t *dst_p4d, p4d_t *src_p4d, + struct vm_area_struct *vma, struct vm_area_struct *new, unsigned long addr, unsigned long end) { + struct mm_struct *dst_mm = new->vm_mm; + struct mm_struct *src_mm = vma->vm_mm; pud_t *src_pud, *dst_pud; unsigned long next; @@ -1124,18 +1126,17 @@ static inline int copy_pud_range(struct } if (pud_none_or_clear_bad(src_pud)) continue; - if (copy_pmd_range(dst_mm, src_mm, dst_pud, src_pud, - vma, new, addr, next)) + if (copy_pmd_range(dst_pud, src_pud, vma, new, addr, next)) return -ENOMEM; } while (dst_pud++, src_pud++, addr = next, addr != end); return 0; } -static inline int copy_p4d_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, - pgd_t *dst_pgd, pgd_t *src_pgd, struct vm_area_struct *vma, - struct vm_area_struct *new, +static inline int copy_p4d_range(pgd_t *dst_pgd, pgd_t *src_pgd, + struct vm_area_struct *vma, struct vm_area_struct *new, unsigned long addr, unsigned long end) { + struct mm_struct *dst_mm = new->vm_mm; p4d_t *src_p4d, *dst_p4d; unsigned long next; @@ -1147,20 +1148,20 @@ static inline int copy_p4d_range(struct next = p4d_addr_end(addr, end); if (p4d_none_or_clear_bad(src_p4d)) continue; - if (copy_pud_range(dst_mm, src_mm, dst_p4d, src_p4d, - vma, new, addr, next)) + if (copy_pud_range(dst_p4d, src_p4d, vma, new, addr, next)) return -ENOMEM; } while (dst_p4d++, src_p4d++, addr = next, addr != end); return 0; } -int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, - struct vm_area_struct *vma, struct vm_area_struct *new) +int copy_page_range(struct vm_area_struct *vma, struct vm_area_struct *new) { pgd_t *src_pgd, *dst_pgd; unsigned long next; unsigned long addr = vma->vm_start; unsigned long end = vma->vm_end; + struct mm_struct *dst_mm = new->vm_mm; + struct mm_struct *src_mm = vma->vm_mm; struct mmu_notifier_range range; bool is_cow; int ret; @@ -1209,7 +1210,7 @@ int copy_page_range(struct mm_struct *ds next = pgd_addr_end(addr, end); if (pgd_none_or_clear_bad(src_pgd)) continue; - if (unlikely(copy_p4d_range(dst_mm, src_mm, dst_pgd, src_pgd, + if (unlikely(copy_p4d_range(dst_pgd, src_pgd, vma, new, addr, next))) { ret = -ENOMEM; break; _ Patches currently in -mm which might be from peterx@xxxxxxxxxx are mm-remove-src-dst-mm-parameter-in-copy_page_range.patch