Re: [PATCH] mm: remove kern_addr_valid() completely

2022-11-10 Thread Palmer Dabbelt

On Tue, 18 Oct 2022 00:40:14 PDT (-0700), wangkefeng.w...@huawei.com wrote:

Most architectures(except arm64/x86/sparc) simply return 1 for
kern_addr_valid(), which is only used in read_kcore(), and it
calls copy_from_kernel_nofault() which could check whether the
address is a valid kernel address, so no need kern_addr_valid(),
let's remove unneeded kern_addr_valid() completely.

Signed-off-by: Kefeng Wang 
---
 arch/alpha/include/asm/pgtable.h  |  2 -
 arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
 arch/arm/include/asm/pgtable-nommu.h  |  2 -
 arch/arm/include/asm/pgtable.h|  4 --
 arch/arm64/include/asm/pgtable.h  |  2 -
 arch/arm64/mm/mmu.c   | 47 ---
 arch/arm64/mm/pageattr.c  |  3 +-
 arch/csky/include/asm/pgtable.h   |  3 --
 arch/hexagon/include/asm/page.h   |  7 
 arch/ia64/include/asm/pgtable.h   | 16 
 arch/loongarch/include/asm/pgtable.h  |  2 -
 arch/m68k/include/asm/pgtable_mm.h|  2 -
 arch/m68k/include/asm/pgtable_no.h|  1 -
 arch/microblaze/include/asm/pgtable.h |  3 --
 arch/mips/include/asm/pgtable.h   |  2 -
 arch/nios2/include/asm/pgtable.h  |  2 -
 arch/openrisc/include/asm/pgtable.h   |  2 -
 arch/parisc/include/asm/pgtable.h | 15 
 arch/powerpc/include/asm/pgtable.h|  7 
 arch/riscv/include/asm/pgtable.h  |  2 -
 arch/s390/include/asm/pgtable.h   |  2 -
 arch/sh/include/asm/pgtable.h |  2 -
 arch/sparc/include/asm/pgtable_32.h   |  6 ---
 arch/sparc/mm/init_32.c   |  3 +-
 arch/sparc/mm/init_64.c   |  1 -
 arch/um/include/asm/pgtable.h |  2 -
 arch/x86/include/asm/pgtable_32.h |  9 -
 arch/x86/include/asm/pgtable_64.h |  1 -
 arch/x86/mm/init_64.c | 41 
 arch/xtensa/include/asm/pgtable.h |  2 -
 fs/proc/kcore.c   | 26 +
 31 files changed, 11 insertions(+), 210 deletions(-)

diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index 3ea9661c09ff..9e45f6735d5d 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -313,8 +313,6 @@ extern inline pte_t mk_swap_pte(unsigned long type, 
unsigned long offset)
 #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) })
 #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })

-#define kern_addr_valid(addr)  (1)
-
 #define pte_ERROR(e) \
printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
 #define pmd_ERROR(e) \
diff --git a/arch/arc/include/asm/pgtable-bits-arcv2.h 
b/arch/arc/include/asm/pgtable-bits-arcv2.h
index b23be557403e..515e82db519f 100644
--- a/arch/arc/include/asm/pgtable-bits-arcv2.h
+++ b/arch/arc/include/asm/pgtable-bits-arcv2.h
@@ -120,8 +120,6 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned 
long address,
 #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) })
 #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })

-#define kern_addr_valid(addr)  (1)
-
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 #include 
 #endif
diff --git a/arch/arm/include/asm/pgtable-nommu.h 
b/arch/arm/include/asm/pgtable-nommu.h
index d16aba48fa0a..25d8c7bb07e0 100644
--- a/arch/arm/include/asm/pgtable-nommu.h
+++ b/arch/arm/include/asm/pgtable-nommu.h
@@ -21,8 +21,6 @@
 #define pgd_none(pgd)  (0)
 #define pgd_bad(pgd)   (0)
 #define pgd_clear(pgdp)
-#define kern_addr_valid(addr)  (1)
-/* FIXME */
 /*
  * PMD_SHIFT determines the size of the area a second-level page table can map
  * PGDIR_SHIFT determines what a third-level page table entry can map
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index 78a532068fec..00954ab1a039 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -298,10 +298,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
  */
 #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)

-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-/* FIXME: this is not correct */
-#define kern_addr_valid(addr)  (1)
-
 /*
  * We provide our own arch_get_unmapped_area to cope with VIPT caches.
  */
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 71a1af42f0e8..4873c1d6e7d0 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -1021,8 +1021,6 @@ static inline pmd_t pmdp_establish(struct vm_area_struct 
*vma,
  */
 #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)

-extern int kern_addr_valid(unsigned long addr);
-
 #ifdef CONFIG_ARM64_MTE

 #define __HAVE_ARCH_PREPARE_TO_SWAP
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 9a7c38965154..556154d821bf 100644
--- a/arch/arm64/mm/mmu.c
+++ 

Re: [PATCH] mm: remove kern_addr_valid() completely

2022-11-02 Thread Catalin Marinas
On Tue, Oct 18, 2022 at 03:40:14PM +0800, Kefeng Wang wrote:
> Most architectures(except arm64/x86/sparc) simply return 1 for
> kern_addr_valid(), which is only used in read_kcore(), and it
> calls copy_from_kernel_nofault() which could check whether the
> address is a valid kernel address, so no need kern_addr_valid(),
> let's remove unneeded kern_addr_valid() completely.
> 
> Signed-off-by: Kefeng Wang 

For arm64:

Acked-by: Catalin Marinas 


Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Guo Ren
On Tue, Oct 18, 2022 at 3:21 PM Kefeng Wang  wrote:
>
> Most architectures(except arm64/x86/sparc) simply return 1 for
> kern_addr_valid(), which is only used in read_kcore(), and it
> calls copy_from_kernel_nofault() which could check whether the
> address is a valid kernel address, so no need kern_addr_valid(),
> let's remove unneeded kern_addr_valid() completely.
>
> Signed-off-by: Kefeng Wang 
> ---
>  arch/alpha/include/asm/pgtable.h  |  2 -
>  arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
>  arch/arm/include/asm/pgtable-nommu.h  |  2 -
>  arch/arm/include/asm/pgtable.h|  4 --
>  arch/arm64/include/asm/pgtable.h  |  2 -
>  arch/arm64/mm/mmu.c   | 47 ---
>  arch/arm64/mm/pageattr.c  |  3 +-
>  arch/csky/include/asm/pgtable.h   |  3 --
>  arch/hexagon/include/asm/page.h   |  7 
>  arch/ia64/include/asm/pgtable.h   | 16 
>  arch/loongarch/include/asm/pgtable.h  |  2 -
>  arch/m68k/include/asm/pgtable_mm.h|  2 -
>  arch/m68k/include/asm/pgtable_no.h|  1 -
>  arch/microblaze/include/asm/pgtable.h |  3 --
>  arch/mips/include/asm/pgtable.h   |  2 -
>  arch/nios2/include/asm/pgtable.h  |  2 -
>  arch/openrisc/include/asm/pgtable.h   |  2 -
>  arch/parisc/include/asm/pgtable.h | 15 
>  arch/powerpc/include/asm/pgtable.h|  7 
>  arch/riscv/include/asm/pgtable.h  |  2 -
>  arch/s390/include/asm/pgtable.h   |  2 -
>  arch/sh/include/asm/pgtable.h |  2 -
>  arch/sparc/include/asm/pgtable_32.h   |  6 ---
>  arch/sparc/mm/init_32.c   |  3 +-
>  arch/sparc/mm/init_64.c   |  1 -
>  arch/um/include/asm/pgtable.h |  2 -
>  arch/x86/include/asm/pgtable_32.h |  9 -
>  arch/x86/include/asm/pgtable_64.h |  1 -
>  arch/x86/mm/init_64.c | 41 
>  arch/xtensa/include/asm/pgtable.h |  2 -
>  fs/proc/kcore.c   | 26 +
>  31 files changed, 11 insertions(+), 210 deletions(-)
>
> diff --git a/arch/alpha/include/asm/pgtable.h 
> b/arch/alpha/include/asm/pgtable.h
> index 3ea9661c09ff..9e45f6735d5d 100644
> --- a/arch/alpha/include/asm/pgtable.h
> +++ b/arch/alpha/include/asm/pgtable.h
> @@ -313,8 +313,6 @@ extern inline pte_t mk_swap_pte(unsigned long type, 
> unsigned long offset)
>  #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) })
>  #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
>
> -#define kern_addr_valid(addr)  (1)
> -
>  #define pte_ERROR(e) \
> printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
>  #define pmd_ERROR(e) \
> diff --git a/arch/arc/include/asm/pgtable-bits-arcv2.h 
> b/arch/arc/include/asm/pgtable-bits-arcv2.h
> index b23be557403e..515e82db519f 100644
> --- a/arch/arc/include/asm/pgtable-bits-arcv2.h
> +++ b/arch/arc/include/asm/pgtable-bits-arcv2.h
> @@ -120,8 +120,6 @@ void update_mmu_cache(struct vm_area_struct *vma, 
> unsigned long address,
>  #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) 
> })
>  #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
>
> -#define kern_addr_valid(addr)  (1)
> -
>  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
>  #include 
>  #endif
> diff --git a/arch/arm/include/asm/pgtable-nommu.h 
> b/arch/arm/include/asm/pgtable-nommu.h
> index d16aba48fa0a..25d8c7bb07e0 100644
> --- a/arch/arm/include/asm/pgtable-nommu.h
> +++ b/arch/arm/include/asm/pgtable-nommu.h
> @@ -21,8 +21,6 @@
>  #define pgd_none(pgd)  (0)
>  #define pgd_bad(pgd)   (0)
>  #define pgd_clear(pgdp)
> -#define kern_addr_valid(addr)  (1)
> -/* FIXME */
>  /*
>   * PMD_SHIFT determines the size of the area a second-level page table can 
> map
>   * PGDIR_SHIFT determines what a third-level page table entry can map
> diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
> index 78a532068fec..00954ab1a039 100644
> --- a/arch/arm/include/asm/pgtable.h
> +++ b/arch/arm/include/asm/pgtable.h
> @@ -298,10 +298,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t 
> newprot)
>   */
>  #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
> __SWP_TYPE_BITS)
>
> -/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
> -/* FIXME: this is not correct */
> -#define kern_addr_valid(addr)  (1)
> -
>  /*
>   * We provide our own arch_get_unmapped_area to cope with VIPT caches.
>   */
> diff --git a/arch/arm64/include/asm/pgtable.h 
> b/arch/arm64/include/asm/pgtable.h
> index 71a1af42f0e8..4873c1d6e7d0 100644
> --- a/arch/arm64/include/asm/pgtable.h
> +++ b/arch/arm64/include/asm/pgtable.h
> @@ -1021,8 +1021,6 @@ static inline pmd_t pmdp_establish(struct 
> vm_area_struct *vma,
>   */
>  #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
> __SWP_TYPE_BITS)
>
> -extern int 

Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread WANG Xuerui

On 2022/10/18 15:40, Kefeng Wang wrote:

Most architectures(except arm64/x86/sparc) simply return 1 for


one space before the opening parens


kern_addr_valid(), which is only used in read_kcore(), and it
calls copy_from_kernel_nofault() which could check whether the
address is a valid kernel address, so no need kern_addr_valid(),


minor grammatical nit:

"... which already checks whether the address is a valid kernel address. 
So kern_addr_valid is unnecessary, let's remove it."



let's remove unneeded kern_addr_valid() completely.

Signed-off-by: Kefeng Wang 
---
  arch/alpha/include/asm/pgtable.h  |  2 -
  arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
  arch/arm/include/asm/pgtable-nommu.h  |  2 -
  arch/arm/include/asm/pgtable.h|  4 --
  arch/arm64/include/asm/pgtable.h  |  2 -
  arch/arm64/mm/mmu.c   | 47 ---
  arch/arm64/mm/pageattr.c  |  3 +-
  arch/csky/include/asm/pgtable.h   |  3 --
  arch/hexagon/include/asm/page.h   |  7 
  arch/ia64/include/asm/pgtable.h   | 16 
  arch/loongarch/include/asm/pgtable.h  |  2 -
  arch/m68k/include/asm/pgtable_mm.h|  2 -
  arch/m68k/include/asm/pgtable_no.h|  1 -
  arch/microblaze/include/asm/pgtable.h |  3 --
  arch/mips/include/asm/pgtable.h   |  2 -
  arch/nios2/include/asm/pgtable.h  |  2 -
  arch/openrisc/include/asm/pgtable.h   |  2 -
  arch/parisc/include/asm/pgtable.h | 15 
  arch/powerpc/include/asm/pgtable.h|  7 
  arch/riscv/include/asm/pgtable.h  |  2 -
  arch/s390/include/asm/pgtable.h   |  2 -
  arch/sh/include/asm/pgtable.h |  2 -
  arch/sparc/include/asm/pgtable_32.h   |  6 ---
  arch/sparc/mm/init_32.c   |  3 +-
  arch/sparc/mm/init_64.c   |  1 -
  arch/um/include/asm/pgtable.h |  2 -
  arch/x86/include/asm/pgtable_32.h |  9 -
  arch/x86/include/asm/pgtable_64.h |  1 -
  arch/x86/mm/init_64.c | 41 
  arch/xtensa/include/asm/pgtable.h |  2 -
  fs/proc/kcore.c   | 26 +
  31 files changed, 11 insertions(+), 210 deletions(-)

diff --git a/arch/loongarch/include/asm/pgtable.h 
b/arch/loongarch/include/asm/pgtable.h
index 946704bee599..fc70b7041b76 100644
--- a/arch/loongarch/include/asm/pgtable.h
+++ b/arch/loongarch/include/asm/pgtable.h
@@ -421,8 +421,6 @@ static inline void update_mmu_cache_pmd(struct 
vm_area_struct *vma,
__update_tlb(vma, address, (pte_t *)pmdp);
  }
  
-#define kern_addr_valid(addr)	(1)

-
  static inline unsigned long pmd_pfn(pmd_t pmd)
  {
return (pmd_val(pmd) & _PFN_MASK) >> _PFN_SHIFT;


Acked-by: WANG Xuerui  # loongarch

Thanks!

--
WANG "xen0n" Xuerui

Linux/LoongArch mailing list: https://lore.kernel.org/loongarch/



Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Helge Deller

On 10/18/22 09:40, Kefeng Wang wrote:

Most architectures(except arm64/x86/sparc) simply return 1 for
kern_addr_valid(), which is only used in read_kcore(), and it
calls copy_from_kernel_nofault() which could check whether the
address is a valid kernel address, so no need kern_addr_valid(),
let's remove unneeded kern_addr_valid() completely.

Signed-off-by: Kefeng Wang 


Acked-by: Helge Deller   # parisc

Thanks!
Helge


---
  arch/alpha/include/asm/pgtable.h  |  2 -
  arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
  arch/arm/include/asm/pgtable-nommu.h  |  2 -
  arch/arm/include/asm/pgtable.h|  4 --
  arch/arm64/include/asm/pgtable.h  |  2 -
  arch/arm64/mm/mmu.c   | 47 ---
  arch/arm64/mm/pageattr.c  |  3 +-
  arch/csky/include/asm/pgtable.h   |  3 --
  arch/hexagon/include/asm/page.h   |  7 
  arch/ia64/include/asm/pgtable.h   | 16 
  arch/loongarch/include/asm/pgtable.h  |  2 -
  arch/m68k/include/asm/pgtable_mm.h|  2 -
  arch/m68k/include/asm/pgtable_no.h|  1 -
  arch/microblaze/include/asm/pgtable.h |  3 --
  arch/mips/include/asm/pgtable.h   |  2 -
  arch/nios2/include/asm/pgtable.h  |  2 -
  arch/openrisc/include/asm/pgtable.h   |  2 -
  arch/parisc/include/asm/pgtable.h | 15 
  arch/powerpc/include/asm/pgtable.h|  7 
  arch/riscv/include/asm/pgtable.h  |  2 -
  arch/s390/include/asm/pgtable.h   |  2 -
  arch/sh/include/asm/pgtable.h |  2 -
  arch/sparc/include/asm/pgtable_32.h   |  6 ---
  arch/sparc/mm/init_32.c   |  3 +-
  arch/sparc/mm/init_64.c   |  1 -
  arch/um/include/asm/pgtable.h |  2 -
  arch/x86/include/asm/pgtable_32.h |  9 -
  arch/x86/include/asm/pgtable_64.h |  1 -
  arch/x86/mm/init_64.c | 41 
  arch/xtensa/include/asm/pgtable.h |  2 -
  fs/proc/kcore.c   | 26 +
  31 files changed, 11 insertions(+), 210 deletions(-)

diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index 3ea9661c09ff..9e45f6735d5d 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -313,8 +313,6 @@ extern inline pte_t mk_swap_pte(unsigned long type, 
unsigned long offset)
  #define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte) })
  #define __swp_entry_to_pte(x) ((pte_t) { (x).val })

-#define kern_addr_valid(addr)  (1)
-
  #define pte_ERROR(e) \
printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
  #define pmd_ERROR(e) \
diff --git a/arch/arc/include/asm/pgtable-bits-arcv2.h 
b/arch/arc/include/asm/pgtable-bits-arcv2.h
index b23be557403e..515e82db519f 100644
--- a/arch/arc/include/asm/pgtable-bits-arcv2.h
+++ b/arch/arc/include/asm/pgtable-bits-arcv2.h
@@ -120,8 +120,6 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned 
long address,
  #define __pte_to_swp_entry(pte)   ((swp_entry_t) { pte_val(pte) })
  #define __swp_entry_to_pte(x) ((pte_t) { (x).val })

-#define kern_addr_valid(addr)  (1)
-
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
  #include 
  #endif
diff --git a/arch/arm/include/asm/pgtable-nommu.h 
b/arch/arm/include/asm/pgtable-nommu.h
index d16aba48fa0a..25d8c7bb07e0 100644
--- a/arch/arm/include/asm/pgtable-nommu.h
+++ b/arch/arm/include/asm/pgtable-nommu.h
@@ -21,8 +21,6 @@
  #define pgd_none(pgd) (0)
  #define pgd_bad(pgd)  (0)
  #define pgd_clear(pgdp)
-#define kern_addr_valid(addr)  (1)
-/* FIXME */
  /*
   * PMD_SHIFT determines the size of the area a second-level page table can map
   * PGDIR_SHIFT determines what a third-level page table entry can map
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index 78a532068fec..00954ab1a039 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -298,10 +298,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
   */
  #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)

-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-/* FIXME: this is not correct */
-#define kern_addr_valid(addr)  (1)
-
  /*
   * We provide our own arch_get_unmapped_area to cope with VIPT caches.
   */
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 71a1af42f0e8..4873c1d6e7d0 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -1021,8 +1021,6 @@ static inline pmd_t pmdp_establish(struct vm_area_struct 
*vma,
   */
  #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)

-extern int kern_addr_valid(unsigned long addr);
-
  #ifdef CONFIG_ARM64_MTE

  #define __HAVE_ARCH_PREPARE_TO_SWAP
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 

Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Christoph Hellwig
Thanks, this is long overdue!

Acked-by: Christoph Hellwig 


Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Heiko Carstens
On Tue, Oct 18, 2022 at 03:40:14PM +0800, Kefeng Wang wrote:
> Most architectures(except arm64/x86/sparc) simply return 1 for
> kern_addr_valid(), which is only used in read_kcore(), and it
> calls copy_from_kernel_nofault() which could check whether the
> address is a valid kernel address, so no need kern_addr_valid(),
> let's remove unneeded kern_addr_valid() completely.
> 
> Signed-off-by: Kefeng Wang 
> ---
...
>  arch/s390/include/asm/pgtable.h   |  2 -

For s390:
Acked-by: Heiko Carstens 


Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Geert Uytterhoeven
On Tue, Oct 18, 2022 at 9:25 AM Kefeng Wang  wrote:
> Most architectures(except arm64/x86/sparc) simply return 1 for
> kern_addr_valid(), which is only used in read_kcore(), and it
> calls copy_from_kernel_nofault() which could check whether the
> address is a valid kernel address, so no need kern_addr_valid(),
> let's remove unneeded kern_addr_valid() completely.
>
> Signed-off-by: Kefeng Wang 

>  arch/m68k/include/asm/pgtable_mm.h|  2 -
>  arch/m68k/include/asm/pgtable_no.h|  1 -

Acked-by: Geert Uytterhoeven  [m68k]

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


[PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Kefeng Wang
Most architectures(except arm64/x86/sparc) simply return 1 for
kern_addr_valid(), which is only used in read_kcore(), and it
calls copy_from_kernel_nofault() which could check whether the
address is a valid kernel address, so no need kern_addr_valid(),
let's remove unneeded kern_addr_valid() completely.

Signed-off-by: Kefeng Wang 
---
 arch/alpha/include/asm/pgtable.h  |  2 -
 arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
 arch/arm/include/asm/pgtable-nommu.h  |  2 -
 arch/arm/include/asm/pgtable.h|  4 --
 arch/arm64/include/asm/pgtable.h  |  2 -
 arch/arm64/mm/mmu.c   | 47 ---
 arch/arm64/mm/pageattr.c  |  3 +-
 arch/csky/include/asm/pgtable.h   |  3 --
 arch/hexagon/include/asm/page.h   |  7 
 arch/ia64/include/asm/pgtable.h   | 16 
 arch/loongarch/include/asm/pgtable.h  |  2 -
 arch/m68k/include/asm/pgtable_mm.h|  2 -
 arch/m68k/include/asm/pgtable_no.h|  1 -
 arch/microblaze/include/asm/pgtable.h |  3 --
 arch/mips/include/asm/pgtable.h   |  2 -
 arch/nios2/include/asm/pgtable.h  |  2 -
 arch/openrisc/include/asm/pgtable.h   |  2 -
 arch/parisc/include/asm/pgtable.h | 15 
 arch/powerpc/include/asm/pgtable.h|  7 
 arch/riscv/include/asm/pgtable.h  |  2 -
 arch/s390/include/asm/pgtable.h   |  2 -
 arch/sh/include/asm/pgtable.h |  2 -
 arch/sparc/include/asm/pgtable_32.h   |  6 ---
 arch/sparc/mm/init_32.c   |  3 +-
 arch/sparc/mm/init_64.c   |  1 -
 arch/um/include/asm/pgtable.h |  2 -
 arch/x86/include/asm/pgtable_32.h |  9 -
 arch/x86/include/asm/pgtable_64.h |  1 -
 arch/x86/mm/init_64.c | 41 
 arch/xtensa/include/asm/pgtable.h |  2 -
 fs/proc/kcore.c   | 26 +
 31 files changed, 11 insertions(+), 210 deletions(-)

diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index 3ea9661c09ff..9e45f6735d5d 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -313,8 +313,6 @@ extern inline pte_t mk_swap_pte(unsigned long type, 
unsigned long offset)
 #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) })
 #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
 
-#define kern_addr_valid(addr)  (1)
-
 #define pte_ERROR(e) \
printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e))
 #define pmd_ERROR(e) \
diff --git a/arch/arc/include/asm/pgtable-bits-arcv2.h 
b/arch/arc/include/asm/pgtable-bits-arcv2.h
index b23be557403e..515e82db519f 100644
--- a/arch/arc/include/asm/pgtable-bits-arcv2.h
+++ b/arch/arc/include/asm/pgtable-bits-arcv2.h
@@ -120,8 +120,6 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned 
long address,
 #define __pte_to_swp_entry(pte)((swp_entry_t) { pte_val(pte) })
 #define __swp_entry_to_pte(x)  ((pte_t) { (x).val })
 
-#define kern_addr_valid(addr)  (1)
-
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 #include 
 #endif
diff --git a/arch/arm/include/asm/pgtable-nommu.h 
b/arch/arm/include/asm/pgtable-nommu.h
index d16aba48fa0a..25d8c7bb07e0 100644
--- a/arch/arm/include/asm/pgtable-nommu.h
+++ b/arch/arm/include/asm/pgtable-nommu.h
@@ -21,8 +21,6 @@
 #define pgd_none(pgd)  (0)
 #define pgd_bad(pgd)   (0)
 #define pgd_clear(pgdp)
-#define kern_addr_valid(addr)  (1)
-/* FIXME */
 /*
  * PMD_SHIFT determines the size of the area a second-level page table can map
  * PGDIR_SHIFT determines what a third-level page table entry can map
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index 78a532068fec..00954ab1a039 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -298,10 +298,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
  */
 #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)
 
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-/* FIXME: this is not correct */
-#define kern_addr_valid(addr)  (1)
-
 /*
  * We provide our own arch_get_unmapped_area to cope with VIPT caches.
  */
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 71a1af42f0e8..4873c1d6e7d0 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -1021,8 +1021,6 @@ static inline pmd_t pmdp_establish(struct vm_area_struct 
*vma,
  */
 #define MAX_SWAPFILES_CHECK() BUILD_BUG_ON(MAX_SWAPFILES_SHIFT > 
__SWP_TYPE_BITS)
 
-extern int kern_addr_valid(unsigned long addr);
-
 #ifdef CONFIG_ARM64_MTE
 
 #define __HAVE_ARCH_PREPARE_TO_SWAP
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 9a7c38965154..556154d821bf 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -814,53 +814,6 @@ void __init paging_init(void)
 

Re: [PATCH] mm: remove kern_addr_valid() completely

2022-10-18 Thread Michael Ellerman
Kefeng Wang  writes:
> Most architectures(except arm64/x86/sparc) simply return 1 for
> kern_addr_valid(), which is only used in read_kcore(), and it
> calls copy_from_kernel_nofault() which could check whether the
> address is a valid kernel address, so no need kern_addr_valid(),
> let's remove unneeded kern_addr_valid() completely.
>
> Signed-off-by: Kefeng Wang 
> ---
>  arch/alpha/include/asm/pgtable.h  |  2 -
>  arch/arc/include/asm/pgtable-bits-arcv2.h |  2 -
>  arch/arm/include/asm/pgtable-nommu.h  |  2 -
>  arch/arm/include/asm/pgtable.h|  4 --
>  arch/arm64/include/asm/pgtable.h  |  2 -
>  arch/arm64/mm/mmu.c   | 47 ---
>  arch/arm64/mm/pageattr.c  |  3 +-
>  arch/csky/include/asm/pgtable.h   |  3 --
>  arch/hexagon/include/asm/page.h   |  7 
>  arch/ia64/include/asm/pgtable.h   | 16 
>  arch/loongarch/include/asm/pgtable.h  |  2 -
>  arch/m68k/include/asm/pgtable_mm.h|  2 -
>  arch/m68k/include/asm/pgtable_no.h|  1 -
>  arch/microblaze/include/asm/pgtable.h |  3 --
>  arch/mips/include/asm/pgtable.h   |  2 -
>  arch/nios2/include/asm/pgtable.h  |  2 -
>  arch/openrisc/include/asm/pgtable.h   |  2 -
>  arch/parisc/include/asm/pgtable.h | 15 
>  arch/powerpc/include/asm/pgtable.h|  7 

Acked-by: Michael Ellerman  (powerpc)

cheers