[PATCH] mm: make 'highmem' symbol ro_after_init

Ard Biesheuvel posted 1 patch 4 years, 5 months ago
mm/memory.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] mm: make 'highmem' symbol ro_after_init
Posted by Ard Biesheuvel 4 years, 5 months ago
The 'highmem' variable is only set at boot, so we can make it
ro_after_init and prevent it from being corrupted inadvertently, or from
ending up in a contended cacheline.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 mm/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/memory.c b/mm/memory.c
index c125c4969913..50e82cb94ccc 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -106,7 +106,7 @@ EXPORT_SYMBOL(mem_map);
  * highstart_pfn must be the same; there must be no gap between ZONE_NORMAL
  * and ZONE_HIGHMEM.
  */
-void *high_memory;
+void *high_memory __ro_after_init;
 EXPORT_SYMBOL(high_memory);
 
 /*
-- 
2.30.2

Re: [PATCH] mm: make 'highmem' symbol ro_after_init
Posted by David Rientjes 4 years, 5 months ago
On Mon, 24 Jan 2022, Ard Biesheuvel wrote:

> diff --git a/mm/memory.c b/mm/memory.c
> index c125c4969913..50e82cb94ccc 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -106,7 +106,7 @@ EXPORT_SYMBOL(mem_map);
>   * highstart_pfn must be the same; there must be no gap between ZONE_NORMAL
>   * and ZONE_HIGHMEM.
>   */
> -void *high_memory;
> +void *high_memory __ro_after_init;
>  EXPORT_SYMBOL(high_memory);
>  
>  /*

Same should be true for the mm/nommu.c variant?