]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
parisc: Remap hugepage-aligned pages in set_kernel_text_rw()
authorHelge Deller <deller@gmx.de>
Fri, 4 Jan 2019 22:32:53 +0000 (23:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 16:46:05 +0000 (17:46 +0100)
commit dfbaecb2b707cfdc5276b548d52b437384bd6483 upstream.

The alternative coding patch for parisc in kernel 4.20 broke booting
machines with PA8500-PA8700 CPUs. The problem is, that for such machines
the parisc kernel automatically utilizes huge pages to access kernel
text code, but the set_kernel_text_rw() function, which is used shortly
before applying any alternative patches, didn't used the correctly
hugepage-aligned addresses to remap the kernel text read-writeable.

Fixes: 3847dab77421 ("parisc: Add alternative coding infrastructure")
Cc: <stable@vger.kernel.org> [4.20]
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/mm/init.c

index 2d7cffcaa476e13016abdd9b5deca4275d537614..059187a3ded7402038f24adfda1f30ed1230c3a0 100644 (file)
@@ -512,8 +512,8 @@ static void __init map_pages(unsigned long start_vaddr,
 
 void __init set_kernel_text_rw(int enable_read_write)
 {
-       unsigned long start = (unsigned long)__init_begin;
-       unsigned long end   = (unsigned long)_etext;
+       unsigned long start = (unsigned long) _text;
+       unsigned long end   = (unsigned long) &data_start;
 
        map_pages(start, __pa(start), end-start,
                PAGE_KERNEL_RWX, enable_read_write ? 1:0);