parisc: Drop __init from map_pages declaration
authorJohn David Anglin <dave.anglin@bell.net>
Sat, 22 Jan 2022 18:19:49 +0000 (18:19 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Feb 2022 11:03:03 +0000 (12:03 +0100)
commit 9129886b88185962538180625ca8051362b01327 upstream.

With huge kernel pages, we randomly eat a SPARC in map_pages(). This
is fixed by dropping __init from the declaration.

However, map_pages references the __init routine memblock_alloc_try_nid
via memblock_alloc.  Thus, it needs to be marked with __ref.

memblock_alloc is only called before the kernel text is set to readonly.

The __ref on free_initmem is no longer needed.

Comment regarding map_pages being in the init section is removed.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Cc: stable@vger.kernel.org # v5.4+
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/mm/init.c

index 65f50f0..e5c1831 100644 (file)
@@ -341,9 +341,9 @@ static void __init setup_bootmem(void)
 
 static bool kernel_set_to_readonly;
 
-static void __init map_pages(unsigned long start_vaddr,
-                            unsigned long start_paddr, unsigned long size,
-                            pgprot_t pgprot, int force)
+static void __ref map_pages(unsigned long start_vaddr,
+                           unsigned long start_paddr, unsigned long size,
+                           pgprot_t pgprot, int force)
 {
        pmd_t *pmd;
        pte_t *pg_table;
@@ -453,7 +453,7 @@ void __init set_kernel_text_rw(int enable_read_write)
        flush_tlb_all();
 }
 
-void __ref free_initmem(void)
+void free_initmem(void)
 {
        unsigned long init_begin = (unsigned long)__init_begin;
        unsigned long init_end = (unsigned long)__init_end;
@@ -467,7 +467,6 @@ void __ref free_initmem(void)
        /* The init text pages are marked R-X.  We have to
         * flush the icache and mark them RW-
         *
-        * This is tricky, because map_pages is in the init section.
         * Do a dummy remap of the data section first (the data
         * section is already PAGE_KERNEL) to pull in the TLB entries
         * for map_kernel */