* [PATCH v2 0/3] mm/memory: remove unused vmf_insert_mixed_mkwrite()
@ 2026-10-02 16:05 Sang-Heon Jeon
2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Sang-Heon Jeon @ 2026-10-02 16:05 UTC (permalink / raw)
To: Andrew Morton, David Hildenbrand
Cc: Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett,
linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko,
Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka
Hello,
Since commit 38607c62b34b ("fs/dax: properly refcount fs dax pages"),
vmf_insert_mixed_mkwrite() has no callers. This series removes it and
the mkwrite handling that only it used.
Patch 1 removes the function.
Patch 2 removes the mkwrite argument, which is then always false. It
also removes the unreachable code in insert_pfn().
Patch 3 merges __vm_insert_mixed() into vmf_insert_mixed().
No functional change.
---
Changes from v1 [1]
- Split into three patches for easier review
- Move the comment about -EBUSY handling above the check in
__vm_insert_mixed()
[1] https://lore.kernel.org/all/20260929143707.450805-1-ekffu200098@gmail.com/
---
Sang-Heon Jeon (3):
mm/memory: remove unused vmf_insert_mixed_mkwrite()
mm/memory: remove the mkwrite argument from __vm_insert_mixed()
mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed()
include/linux/mm.h | 2 --
mm/memory.c | 81 ++++++++++++++--------------------------------
2 files changed, 24 insertions(+), 59 deletions(-)
base-commit: 1c2b8d2725f84b43fabe3b3e9628c91db8ca6c65
--
2.43.0
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH v2 1/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() 2026-10-02 16:05 [PATCH v2 0/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() Sang-Heon Jeon @ 2026-10-02 16:05 ` Sang-Heon Jeon 2026-10-02 18:35 ` SJ Park ` (2 more replies) 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon 2 siblings, 3 replies; 13+ messages in thread From: Sang-Heon Jeon @ 2026-10-02 16:05 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand Cc: Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka Since commit 38607c62b34b ("fs/dax: properly refcount fs dax pages"), vmf_insert_mixed_mkwrite() has no callers. So remove the function and its declaration. The comment above the function describes the -EBUSY handling in __vm_insert_mixed(). Move it above that check. No functional change. Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> --- include/linux/mm.h | 2 -- mm/memory.c | 16 +++++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index c038d06825c3..2ac734efd4ec 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -5008,8 +5008,6 @@ vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn, pgprot_t pgprot); vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); -vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma, - unsigned long addr, unsigned long pfn); int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len); static inline vm_fault_t vmf_insert_page(struct vm_area_struct *vma, diff --git a/mm/memory.c b/mm/memory.c index 330cde31bf8b..4b2e4be28031 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3052,6 +3052,11 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, if (err == -ENOMEM) return VM_FAULT_OOM; + /* + * If the insertion of PTE failed because someone else already added a + * different entry in the mean time, we treat that as success as we assume + * the same entry was actually inserted. + */ if (err < 0 && err != -EBUSY) return VM_FAULT_SIGBUS; @@ -3085,17 +3090,6 @@ vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, } EXPORT_SYMBOL(vmf_insert_mixed); -/* - * If the insertion of PTE failed because someone else already added a - * different entry in the mean time, we treat that as success as we assume - * the same entry was actually inserted. - */ -vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma, - unsigned long addr, unsigned long pfn) -{ - return __vm_insert_mixed(vma, addr, pfn, true); -} - /* * maps a range of physical memory into the requested pages. the old * mappings are removed. any references to nonexistent pages results -- 2.43.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon @ 2026-10-02 18:35 ` SJ Park 2026-10-02 23:32 ` Jose A. Perez de Azpillaga 2026-10-05 2:36 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: SJ Park @ 2026-10-02 18:35 UTC (permalink / raw) To: Sang-Heon Jeon Cc: SJ Park, Andrew Morton, David Hildenbrand, Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, 3 Oct 2026 01:05:32 +0900 Sang-Heon Jeon <ekffu200098@gmail.com> wrote: > Since commit 38607c62b34b ("fs/dax: properly refcount fs dax pages"), > vmf_insert_mixed_mkwrite() has no callers. > > So remove the function and its declaration. > > The comment above the function describes the -EBUSY handling in > __vm_insert_mixed(). Move it above that check. > > No functional change. Looks good to me. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: SJ Park <sj@kernel.org> Thanks, SJ [...] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon 2026-10-02 18:35 ` SJ Park @ 2026-10-02 23:32 ` Jose A. Perez de Azpillaga 2026-10-05 2:36 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Jose A. Perez de Azpillaga @ 2026-10-02 23:32 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Anshuman Khandual, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:32AM +0900, Sang-Heon Jeon wrote: > Since commit 38607c62b34b ("fs/dax: properly refcount fs dax pages"), > vmf_insert_mixed_mkwrite() has no callers. > > So remove the function and its declaration. > > The comment above the function describes the -EBUSY handling in > __vm_insert_mixed(). Move it above that check. > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> all three LGMT so I'll RB them :) Reviewed-by: Jose A. Perez de Azpillaga <azpijr@gmail.com> -- cheers, jose a. p-a ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon 2026-10-02 18:35 ` SJ Park 2026-10-02 23:32 ` Jose A. Perez de Azpillaga @ 2026-10-05 2:36 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Anshuman Khandual @ 2026-10-05 2:36 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:32AM +0900, Sang-Heon Jeon wrote: > Since commit 38607c62b34b ("fs/dax: properly refcount fs dax pages"), > vmf_insert_mixed_mkwrite() has no callers. > > So remove the function and its declaration. > > The comment above the function describes the -EBUSY handling in > __vm_insert_mixed(). Move it above that check. > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > include/linux/mm.h | 2 -- > mm/memory.c | 16 +++++----------- > 2 files changed, 5 insertions(+), 13 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index c038d06825c3..2ac734efd4ec 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -5008,8 +5008,6 @@ vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr, > unsigned long pfn, pgprot_t pgprot); > vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, > unsigned long pfn); > -vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma, > - unsigned long addr, unsigned long pfn); > int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len); > > static inline vm_fault_t vmf_insert_page(struct vm_area_struct *vma, > diff --git a/mm/memory.c b/mm/memory.c > index 330cde31bf8b..4b2e4be28031 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3052,6 +3052,11 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, > > if (err == -ENOMEM) > return VM_FAULT_OOM; > + /* > + * If the insertion of PTE failed because someone else already added a > + * different entry in the mean time, we treat that as success as we assume > + * the same entry was actually inserted. > + */ > if (err < 0 && err != -EBUSY) > return VM_FAULT_SIGBUS; > > @@ -3085,17 +3090,6 @@ vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, > } > EXPORT_SYMBOL(vmf_insert_mixed); > > -/* > - * If the insertion of PTE failed because someone else already added a > - * different entry in the mean time, we treat that as success as we assume > - * the same entry was actually inserted. > - */ > -vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma, > - unsigned long addr, unsigned long pfn) > -{ > - return __vm_insert_mixed(vma, addr, pfn, true); > -} > - > /* > * maps a range of physical memory into the requested pages. the old > * mappings are removed. any references to nonexistent pages results > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() 2026-10-02 16:05 [PATCH v2 0/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() Sang-Heon Jeon 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon @ 2026-10-02 16:05 ` Sang-Heon Jeon 2026-10-02 18:45 ` SJ Park ` (2 more replies) 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon 2 siblings, 3 replies; 13+ messages in thread From: Sang-Heon Jeon @ 2026-10-02 16:05 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand Cc: Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka __vm_insert_mixed() is only called from vmf_insert_mixed() with mkwrite == false, so mkwrite is also always false in vm_mixed_ok() and insert_pfn(). So remove the argument and the unreachable code in insert_pfn(). No functional change. Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> --- mm/memory.c | 57 +++++++++++++++++------------------------------------ 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 4b2e4be28031..6c1d38eba7b2 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2453,7 +2453,14 @@ static int insert_page_into_pte_locked(struct vm_area_struct *vma, pte_t *pte, if (!mkwrite) return -EBUSY; - /* see insert_pfn(). */ + /* + * For read faults on private mappings the PFN passed in may + * not match the PFN we have mapped if the mapped PFN is a + * writeable COW page. In the mkwrite case we are creating a + * writable PTE for a shared mapping and we expect the PFNs to + * match. If they don't match, we are likely racing with block + * allocation and mapping invalidation. + */ if (pte_pfn(pteval) != page_to_pfn(page)) { WARN_ON_ONCE(!is_zero_pfn(pte_pfn(pteval))); return -EFAULT; @@ -2858,7 +2865,7 @@ int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages, EXPORT_SYMBOL(vm_map_pages_zero); static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr, - unsigned long pfn, pgprot_t prot, bool mkwrite) + unsigned long pfn, pgprot_t prot) { struct mm_struct *mm = vma->vm_mm; pte_t *pte, entry; @@ -2868,38 +2875,12 @@ static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr, if (!pte) return VM_FAULT_OOM; entry = ptep_get(pte); - if (!pte_none(entry)) { - if (mkwrite) { - /* - * For read faults on private mappings the PFN passed - * in may not match the PFN we have mapped if the - * mapped PFN is a writeable COW page. In the mkwrite - * case we are creating a writable PTE for a shared - * mapping and we expect the PFNs to match. If they - * don't match, we are likely racing with block - * allocation and mapping invalidation so just skip the - * update. - */ - if (pte_pfn(entry) != pfn) { - WARN_ON_ONCE(!is_zero_pfn(pte_pfn(entry))); - goto out_unlock; - } - entry = pte_mkyoung(entry); - entry = maybe_mkwrite(pte_mkdirty(entry), vma); - if (ptep_set_access_flags(vma, addr, pte, entry, 1)) - update_mmu_cache(vma, addr, pte); - } + if (!pte_none(entry)) goto out_unlock; - } /* Ok, finally just insert the thing.. */ entry = pte_mkspecial(pfn_pte(pfn, prot)); - if (mkwrite) { - entry = pte_mkyoung(entry); - entry = maybe_mkwrite(pte_mkdirty(entry), vma); - } - set_pte_at(mm, addr, pte, entry); update_mmu_cache(vma, addr, pte); /* XXX: why not for insert_page? */ @@ -2967,7 +2948,7 @@ vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr, pfnmap_setup_cachemode_pfn(pfn, &pgprot); - return insert_pfn(vma, addr, pfn, pgprot, false); + return insert_pfn(vma, addr, pfn, pgprot); } EXPORT_SYMBOL(vmf_insert_pfn_prot); @@ -2998,11 +2979,9 @@ vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr, } EXPORT_SYMBOL(vmf_insert_pfn); -static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn, - bool mkwrite) +static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn) { - if (unlikely(is_zero_pfn(pfn)) && - (mkwrite || !vm_mixed_zeropage_allowed(vma))) + if (unlikely(is_zero_pfn(pfn)) && !vm_mixed_zeropage_allowed(vma)) return false; /* these checks mirror the abort conditions in vm_normal_page */ if (vma->vm_flags & VM_MIXEDMAP) @@ -3013,12 +2992,12 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn, } static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, - unsigned long addr, unsigned long pfn, bool mkwrite) + unsigned long addr, unsigned long pfn) { pgprot_t pgprot = vma->vm_page_prot; int err; - if (!vm_mixed_ok(vma, pfn, mkwrite)) + if (!vm_mixed_ok(vma, pfn)) return VM_FAULT_SIGBUS; if (addr < vma->vm_start || addr >= vma->vm_end) @@ -3045,9 +3024,9 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, * result in pfn_t_has_page() == false. */ page = pfn_to_page(pfn); - err = insert_page(vma, addr, page, pgprot, mkwrite); + err = insert_page(vma, addr, page, pgprot, false); } else { - return insert_pfn(vma, addr, pfn, pgprot, mkwrite); + return insert_pfn(vma, addr, pfn, pgprot); } if (err == -ENOMEM) @@ -3086,7 +3065,7 @@ EXPORT_SYMBOL_GPL(vmf_insert_page_mkwrite); vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) { - return __vm_insert_mixed(vma, addr, pfn, false); + return __vm_insert_mixed(vma, addr, pfn); } EXPORT_SYMBOL(vmf_insert_mixed); -- 2.43.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon @ 2026-10-02 18:45 ` SJ Park 2026-10-02 23:34 ` Jose A. Perez de Azpillaga 2026-10-05 2:40 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: SJ Park @ 2026-10-02 18:45 UTC (permalink / raw) To: Sang-Heon Jeon Cc: SJ Park, Andrew Morton, David Hildenbrand, Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, 3 Oct 2026 01:05:33 +0900 Sang-Heon Jeon <ekffu200098@gmail.com> wrote: > __vm_insert_mixed() is only called from vmf_insert_mixed() with > mkwrite == false, so mkwrite is also always false in vm_mixed_ok() > and insert_pfn(). > > So remove the argument and the unreachable code in insert_pfn(). > > No functional change. Looks correct to me. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: SJ Park <sj@kernel.org> Thanks, SJ [...] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon 2026-10-02 18:45 ` SJ Park @ 2026-10-02 23:34 ` Jose A. Perez de Azpillaga 2026-10-05 2:40 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Jose A. Perez de Azpillaga @ 2026-10-02 23:34 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Anshuman Khandual, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:33AM +0900, Sang-Heon Jeon wrote: > __vm_insert_mixed() is only called from vmf_insert_mixed() with > mkwrite == false, so mkwrite is also always false in vm_mixed_ok() > and insert_pfn(). > > So remove the argument and the unreachable code in insert_pfn(). > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: Jose A. Perez de Azpillaga <azpijr@gmail.com> -- cheers, jose a. p-a ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon 2026-10-02 18:45 ` SJ Park 2026-10-02 23:34 ` Jose A. Perez de Azpillaga @ 2026-10-05 2:40 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Anshuman Khandual @ 2026-10-05 2:40 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:33AM +0900, Sang-Heon Jeon wrote: > __vm_insert_mixed() is only called from vmf_insert_mixed() with > mkwrite == false, so mkwrite is also always false in vm_mixed_ok() > and insert_pfn(). > > So remove the argument and the unreachable code in insert_pfn(). > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > mm/memory.c | 57 +++++++++++++++++------------------------------------ > 1 file changed, 18 insertions(+), 39 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 4b2e4be28031..6c1d38eba7b2 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -2453,7 +2453,14 @@ static int insert_page_into_pte_locked(struct vm_area_struct *vma, pte_t *pte, > if (!mkwrite) > return -EBUSY; > > - /* see insert_pfn(). */ > + /* > + * For read faults on private mappings the PFN passed in may > + * not match the PFN we have mapped if the mapped PFN is a > + * writeable COW page. In the mkwrite case we are creating a > + * writable PTE for a shared mapping and we expect the PFNs to > + * match. If they don't match, we are likely racing with block > + * allocation and mapping invalidation. > + */ > if (pte_pfn(pteval) != page_to_pfn(page)) { > WARN_ON_ONCE(!is_zero_pfn(pte_pfn(pteval))); > return -EFAULT; > @@ -2858,7 +2865,7 @@ int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages, > EXPORT_SYMBOL(vm_map_pages_zero); > > static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr, > - unsigned long pfn, pgprot_t prot, bool mkwrite) > + unsigned long pfn, pgprot_t prot) > { > struct mm_struct *mm = vma->vm_mm; > pte_t *pte, entry; > @@ -2868,38 +2875,12 @@ static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr, > if (!pte) > return VM_FAULT_OOM; > entry = ptep_get(pte); > - if (!pte_none(entry)) { > - if (mkwrite) { > - /* > - * For read faults on private mappings the PFN passed > - * in may not match the PFN we have mapped if the > - * mapped PFN is a writeable COW page. In the mkwrite > - * case we are creating a writable PTE for a shared > - * mapping and we expect the PFNs to match. If they > - * don't match, we are likely racing with block > - * allocation and mapping invalidation so just skip the > - * update. > - */ > - if (pte_pfn(entry) != pfn) { > - WARN_ON_ONCE(!is_zero_pfn(pte_pfn(entry))); > - goto out_unlock; > - } > - entry = pte_mkyoung(entry); > - entry = maybe_mkwrite(pte_mkdirty(entry), vma); > - if (ptep_set_access_flags(vma, addr, pte, entry, 1)) > - update_mmu_cache(vma, addr, pte); > - } > + if (!pte_none(entry)) > goto out_unlock; > - } > > /* Ok, finally just insert the thing.. */ > entry = pte_mkspecial(pfn_pte(pfn, prot)); > > - if (mkwrite) { > - entry = pte_mkyoung(entry); > - entry = maybe_mkwrite(pte_mkdirty(entry), vma); > - } > - > set_pte_at(mm, addr, pte, entry); > update_mmu_cache(vma, addr, pte); /* XXX: why not for insert_page? */ > > @@ -2967,7 +2948,7 @@ vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr, > > pfnmap_setup_cachemode_pfn(pfn, &pgprot); > > - return insert_pfn(vma, addr, pfn, pgprot, false); > + return insert_pfn(vma, addr, pfn, pgprot); > } > EXPORT_SYMBOL(vmf_insert_pfn_prot); > > @@ -2998,11 +2979,9 @@ vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr, > } > EXPORT_SYMBOL(vmf_insert_pfn); > > -static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn, > - bool mkwrite) > +static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn) > { > - if (unlikely(is_zero_pfn(pfn)) && > - (mkwrite || !vm_mixed_zeropage_allowed(vma))) > + if (unlikely(is_zero_pfn(pfn)) && !vm_mixed_zeropage_allowed(vma)) > return false; > /* these checks mirror the abort conditions in vm_normal_page */ > if (vma->vm_flags & VM_MIXEDMAP) > @@ -3013,12 +2992,12 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn, > } > > static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, > - unsigned long addr, unsigned long pfn, bool mkwrite) > + unsigned long addr, unsigned long pfn) > { > pgprot_t pgprot = vma->vm_page_prot; > int err; > > - if (!vm_mixed_ok(vma, pfn, mkwrite)) > + if (!vm_mixed_ok(vma, pfn)) > return VM_FAULT_SIGBUS; > > if (addr < vma->vm_start || addr >= vma->vm_end) > @@ -3045,9 +3024,9 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, > * result in pfn_t_has_page() == false. > */ > page = pfn_to_page(pfn); > - err = insert_page(vma, addr, page, pgprot, mkwrite); > + err = insert_page(vma, addr, page, pgprot, false); > } else { > - return insert_pfn(vma, addr, pfn, pgprot, mkwrite); > + return insert_pfn(vma, addr, pfn, pgprot); > } > > if (err == -ENOMEM) > @@ -3086,7 +3065,7 @@ EXPORT_SYMBOL_GPL(vmf_insert_page_mkwrite); > vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, > unsigned long pfn) > { > - return __vm_insert_mixed(vma, addr, pfn, false); > + return __vm_insert_mixed(vma, addr, pfn); > } > EXPORT_SYMBOL(vmf_insert_mixed); > > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() 2026-10-02 16:05 [PATCH v2 0/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() Sang-Heon Jeon 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon @ 2026-10-02 16:05 ` Sang-Heon Jeon 2026-10-02 18:47 ` SJ Park ` (2 more replies) 2 siblings, 3 replies; 13+ messages in thread From: Sang-Heon Jeon @ 2026-10-02 16:05 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand Cc: Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka vmf_insert_mixed() just calls __vm_insert_mixed() with the same arguments. So merge __vm_insert_mixed() into vmf_insert_mixed(). No functional change. Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> --- mm/memory.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 6c1d38eba7b2..bde650e207c9 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2991,8 +2991,8 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn) return false; } -static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, - unsigned long addr, unsigned long pfn) +vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, + unsigned long pfn) { pgprot_t pgprot = vma->vm_page_prot; int err; @@ -3041,6 +3041,7 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, return VM_FAULT_NOPAGE; } +EXPORT_SYMBOL(vmf_insert_mixed); vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page, bool write) @@ -3062,13 +3063,6 @@ vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page, } EXPORT_SYMBOL_GPL(vmf_insert_page_mkwrite); -vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, - unsigned long pfn) -{ - return __vm_insert_mixed(vma, addr, pfn); -} -EXPORT_SYMBOL(vmf_insert_mixed); - /* * maps a range of physical memory into the requested pages. the old * mappings are removed. any references to nonexistent pages results -- 2.43.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon @ 2026-10-02 18:47 ` SJ Park 2026-10-02 23:35 ` Jose A. Perez de Azpillaga 2026-10-05 3:14 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: SJ Park @ 2026-10-02 18:47 UTC (permalink / raw) To: Sang-Heon Jeon Cc: SJ Park, Andrew Morton, David Hildenbrand, Anshuman Khandual, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, 3 Oct 2026 01:05:34 +0900 Sang-Heon Jeon <ekffu200098@gmail.com> wrote: > vmf_insert_mixed() just calls __vm_insert_mixed() with the same > arguments. > > So merge __vm_insert_mixed() into vmf_insert_mixed(). > > No functional change. Makes sense to me. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: SJ Park <sj@kernel.org> Thanks, SJ [...] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon 2026-10-02 18:47 ` SJ Park @ 2026-10-02 23:35 ` Jose A. Perez de Azpillaga 2026-10-05 3:14 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Jose A. Perez de Azpillaga @ 2026-10-02 23:35 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Anshuman Khandual, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:34AM +0900, Sang-Heon Jeon wrote: > vmf_insert_mixed() just calls __vm_insert_mixed() with the same > arguments. > > So merge __vm_insert_mixed() into vmf_insert_mixed(). > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: Jose A. Perez de Azpillaga <azpijr@gmail.com> -- cheers, jose a. p-a ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon 2026-10-02 18:47 ` SJ Park 2026-10-02 23:35 ` Jose A. Perez de Azpillaga @ 2026-10-05 3:14 ` Anshuman Khandual 2 siblings, 0 replies; 13+ messages in thread From: Anshuman Khandual @ 2026-10-05 3:14 UTC (permalink / raw) To: Sang-Heon Jeon Cc: Andrew Morton, David Hildenbrand, Jose A . Perez de Azpillaga, Liam R. Howlett, linux-kernel, linux-mm, Lorenzo Stoakes, Michal Hocko, Mike Rapoport, Suren Baghdasaryan, Vlastimil Babka On Sat, Oct 03, 2026 at 01:05:34AM +0900, Sang-Heon Jeon wrote: > vmf_insert_mixed() just calls __vm_insert_mixed() with the same > arguments. > > So merge __vm_insert_mixed() into vmf_insert_mixed(). > > No functional change. > > Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > mm/memory.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 6c1d38eba7b2..bde650e207c9 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -2991,8 +2991,8 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, unsigned long pfn) > return false; > } > > -static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, > - unsigned long addr, unsigned long pfn) > +vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, > + unsigned long pfn) > { > pgprot_t pgprot = vma->vm_page_prot; > int err; > @@ -3041,6 +3041,7 @@ static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma, > > return VM_FAULT_NOPAGE; > } > +EXPORT_SYMBOL(vmf_insert_mixed); > > vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page, > bool write) > @@ -3062,13 +3063,6 @@ vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page, > } > EXPORT_SYMBOL_GPL(vmf_insert_page_mkwrite); > > -vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, > - unsigned long pfn) > -{ > - return __vm_insert_mixed(vma, addr, pfn); > -} > -EXPORT_SYMBOL(vmf_insert_mixed); > - > /* > * maps a range of physical memory into the requested pages. the old > * mappings are removed. any references to nonexistent pages results > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-10-05 3:14 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-10-02 16:05 [PATCH v2 0/3] mm/memory: remove unused vmf_insert_mixed_mkwrite() Sang-Heon Jeon 2026-10-02 16:05 ` [PATCH v2 1/3] " Sang-Heon Jeon 2026-10-02 18:35 ` SJ Park 2026-10-02 23:32 ` Jose A. Perez de Azpillaga 2026-10-05 2:36 ` Anshuman Khandual 2026-10-02 16:05 ` [PATCH v2 2/3] mm/memory: remove the mkwrite argument from __vm_insert_mixed() Sang-Heon Jeon 2026-10-02 18:45 ` SJ Park 2026-10-02 23:34 ` Jose A. Perez de Azpillaga 2026-10-05 2:40 ` Anshuman Khandual 2026-10-02 16:05 ` [PATCH v2 3/3] mm/memory: merge __vm_insert_mixed() into vmf_insert_mixed() Sang-Heon Jeon 2026-10-02 18:47 ` SJ Park 2026-10-02 23:35 ` Jose A. Perez de Azpillaga 2026-10-05 3:14 ` Anshuman Khandual
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®