linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT
@ 2021-05-13 11:27 Russell King
  2021-05-17  7:47 ` Anshuman Khandual
  2021-05-21  2:41 ` Hugh Dickins
  0 siblings, 2 replies; 3+ messages in thread
From: Russell King @ 2021-05-13 11:27 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Anshuman Khandual, Thomas Gleixner, Allison Randal, linux-kernel

Swap entries use a faulting PTE which have the least two significant
bits as zero. Due to this, the use of PTE_TYPE_FAULT was overlooked,
but really should have been included in __swp_entry_to_pte().

Convert this macro to use PTE_TYPE_FAULT to properly document what is
going on here, and use __pte() to convert the swp_entry_t to a pte_t.

This results in no change to the resulting kernel text.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
 arch/arm/include/asm/pgtable.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index c02f24400369..c43e07d6046d 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -303,7 +303,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
 #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << __SWP_TYPE_SHIFT) | ((offset) << __SWP_OFFSET_SHIFT) })
 
 #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) })
-#define __swp_entry_to_pte(swp)	((pte_t) { (swp).val })
+#define __swp_entry_to_pte(swp)	__pte((swp).val | PTE_TYPE_FAULT)
 
 /*
  * It is an error for the kernel to have more swap files than we can
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT
  2021-05-13 11:27 [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT Russell King
@ 2021-05-17  7:47 ` Anshuman Khandual
  2021-05-21  2:41 ` Hugh Dickins
  1 sibling, 0 replies; 3+ messages in thread
From: Anshuman Khandual @ 2021-05-17  7:47 UTC (permalink / raw)
  To: Russell King, linux-arm-kernel
  Cc: Thomas Gleixner, Allison Randal, linux-kernel



On 5/13/21 4:57 PM, Russell King wrote:
> Swap entries use a faulting PTE which have the least two significant
> bits as zero. Due to this, the use of PTE_TYPE_FAULT was overlooked,
> but really should have been included in __swp_entry_to_pte().
> 
> Convert this macro to use PTE_TYPE_FAULT to properly document what is
> going on here, and use __pte() to convert the swp_entry_t to a pte_t.
> 
> This results in no change to the resulting kernel text.
> 
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
> ---
>  arch/arm/include/asm/pgtable.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
> index c02f24400369..c43e07d6046d 100644
> --- a/arch/arm/include/asm/pgtable.h
> +++ b/arch/arm/include/asm/pgtable.h
> @@ -303,7 +303,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
>  #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << __SWP_TYPE_SHIFT) | ((offset) << __SWP_OFFSET_SHIFT) })
>  
>  #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) })
> -#define __swp_entry_to_pte(swp)	((pte_t) { (swp).val })
> +#define __swp_entry_to_pte(swp)	__pte((swp).val | PTE_TYPE_FAULT)

LGTM and FWIW..

Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>

>  
>  /*
>   * It is an error for the kernel to have more swap files than we can
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT
  2021-05-13 11:27 [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT Russell King
  2021-05-17  7:47 ` Anshuman Khandual
@ 2021-05-21  2:41 ` Hugh Dickins
  1 sibling, 0 replies; 3+ messages in thread
From: Hugh Dickins @ 2021-05-21  2:41 UTC (permalink / raw)
  To: Russell King
  Cc: linux-arm-kernel, Anshuman Khandual, Thomas Gleixner,
	Allison Randal, linux-kernel

On Thu, 13 May 2021, Russell King wrote:

> Swap entries use a faulting PTE which have the least two significant
> bits as zero. Due to this, the use of PTE_TYPE_FAULT was overlooked,
> but really should have been included in __swp_entry_to_pte().
> 
> Convert this macro to use PTE_TYPE_FAULT to properly document what is
> going on here, and use __pte() to convert the swp_entry_t to a pte_t.
> 
> This results in no change to the resulting kernel text.
> 
> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>

Hmm.  Speaking as one who occasionally has to trawl through all
the architectures considering their __swp_entry() implementations,
I would much prefer you to drop this patch: I don't think it helps
anyone to insist on ORing in (something which when one searches
further turns out to be) 0.

But if you really want to keep it, please remember it's not just
__swp_entry_to_pte() that "needs" changing: __pte_to_swp_entry()
ought to mask it off, pte_clear() ought to set it, pte_none()
ought to compare against it, page table initialization ought
to memset with it, and probably more :)

Thanks,
Hugh

> ---
>  arch/arm/include/asm/pgtable.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
> index c02f24400369..c43e07d6046d 100644
> --- a/arch/arm/include/asm/pgtable.h
> +++ b/arch/arm/include/asm/pgtable.h
> @@ -303,7 +303,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
>  #define __swp_entry(type,offset) ((swp_entry_t) { ((type) << __SWP_TYPE_SHIFT) | ((offset) << __SWP_OFFSET_SHIFT) })
>  
>  #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) })
> -#define __swp_entry_to_pte(swp)	((pte_t) { (swp).val })
> +#define __swp_entry_to_pte(swp)	__pte((swp).val | PTE_TYPE_FAULT)
>  
>  /*
>   * It is an error for the kernel to have more swap files than we can
> -- 
> 2.20.1

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-05-21  2:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-13 11:27 [PATCH] ARM: update __swp_entry_to_pte() to use PTE_TYPE_FAULT Russell King
2021-05-17  7:47 ` Anshuman Khandual
2021-05-21  2:41 ` Hugh Dickins

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).