include/linux/pgtable.h | 4 ---- mm/gup.c | 5 +---- 2 files changed, 1 insertion(+), 8 deletions(-)
Remove pgd_offset_gate() completely and simply make the single
caller use pgd_offset()
It appears that the gate area resides in the kernel-mapped segment
exclusively on IA64. Therefore, removing pgd_offset_k is safe since
IA64 is now obsolete.
Signed-off-by: Feng Lee <379943137@qq.com>
---
Changes in v2:
- remove pgd_offset_gate completely
- remove pgd_offset_k from the get_gate_page function completely
---
include/linux/pgtable.h | 4 ----
mm/gup.c | 5 +----
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index b50447ef1c92..f1e890b60460 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -1164,10 +1164,6 @@ static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio)
}
#endif
-#ifndef __HAVE_ARCH_PGD_OFFSET_GATE
-#define pgd_offset_gate(mm, addr) pgd_offset(mm, addr)
-#endif
-
#ifndef __HAVE_ARCH_MOVE_PTE
#define move_pte(pte, old_addr, new_addr) (pte)
#endif
diff --git a/mm/gup.c b/mm/gup.c
index f32168339390..0685403fe510 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -1101,10 +1101,7 @@ static int get_gate_page(struct mm_struct *mm, unsigned long address,
/* user gate pages are read-only */
if (gup_flags & FOLL_WRITE)
return -EFAULT;
- if (address > TASK_SIZE)
- pgd = pgd_offset_k(address);
- else
- pgd = pgd_offset_gate(mm, address);
+ pgd = pgd_offset(mm, address);
if (pgd_none(*pgd))
return -EFAULT;
p4d = p4d_offset(pgd, address);
--
2.49.0
On Fri, May 9, 2025 at 1:54 PM Feng Lee <379943137@qq.com> wrote: > > Remove pgd_offset_gate() completely and simply make the single > caller use pgd_offset() "." > > It appears that the gate area resides in the kernel-mapped segment > exclusively on IA64. Therefore, removing pgd_offset_k is safe since > IA64 is now obsolete. > > Signed-off-by: Feng Lee <379943137@qq.com> > Better to rename the subject to be more specific, e.g. "mm: remove obsolete pgd_offset_gate()" or similar. Otherwise, Reviewed-by: Barry Song <baohua@kernel.org> > --- > Changes in v2: > - remove pgd_offset_gate completely > - remove pgd_offset_k from the get_gate_page function completely > --- > include/linux/pgtable.h | 4 ---- > mm/gup.c | 5 +---- > 2 files changed, 1 insertion(+), 8 deletions(-) > > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index b50447ef1c92..f1e890b60460 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -1164,10 +1164,6 @@ static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio) > } > #endif > > -#ifndef __HAVE_ARCH_PGD_OFFSET_GATE > -#define pgd_offset_gate(mm, addr) pgd_offset(mm, addr) > -#endif > - > #ifndef __HAVE_ARCH_MOVE_PTE > #define move_pte(pte, old_addr, new_addr) (pte) > #endif > diff --git a/mm/gup.c b/mm/gup.c > index f32168339390..0685403fe510 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -1101,10 +1101,7 @@ static int get_gate_page(struct mm_struct *mm, unsigned long address, > /* user gate pages are read-only */ > if (gup_flags & FOLL_WRITE) > return -EFAULT; > - if (address > TASK_SIZE) > - pgd = pgd_offset_k(address); > - else > - pgd = pgd_offset_gate(mm, address); > + pgd = pgd_offset(mm, address); > if (pgd_none(*pgd)) > return -EFAULT; > p4d = p4d_offset(pgd, address); > -- > 2.49.0 > Thanks barry
On 09.05.25 04:44, Barry Song wrote: > On Fri, May 9, 2025 at 1:54 PM Feng Lee <379943137@qq.com> wrote: >> >> Remove pgd_offset_gate() completely and simply make the single >> caller use pgd_offset() > > "." > >> >> It appears that the gate area resides in the kernel-mapped segment >> exclusively on IA64. Therefore, removing pgd_offset_k is safe since >> IA64 is now obsolete. >> >> Signed-off-by: Feng Lee <379943137@qq.com> >> > > Better to rename the subject to be more specific, e.g. "mm: remove > obsolete pgd_offset_gate()" or similar. Otherwise, With that Acked-by: David Hildenbrand <david@redhat.com> Thanks! -- Cheers, David / dhildenb
© 2016 - 2025 Red Hat, Inc.