powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX
authorChristophe Leroy <christophe.leroy@c-s.fr>
Tue, 21 Nov 2017 14:28:20 +0000 (15:28 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 22 Nov 2017 12:04:20 +0000 (23:04 +1100)
commit252eb55816a6f69ef9464cad303cdb3326cdc61d
tree82da0aef8fcf25b6696049d5cae17d175ff9c800
parentf3f1dfd600ff82b18b7ea73d80eb27f476a6aa97
powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX

On powerpc32, patch_instruction() is called by apply_feature_fixups()
which is called from early_init()

There is the following note in front of early_init():
 * Note that the kernel may be running at an address which is different
 * from the address that it was linked at, so we must use RELOC/PTRRELOC
 * to access static data (including strings).  -- paulus

Therefore, slab_is_available() cannot be called yet, and
text_poke_area must be addressed with PTRRELOC()

Fixes: 95902e6c8864 ("powerpc/mm: Implement STRICT_KERNEL_RWX on PPC32")
Cc: stable@vger.kernel.org # v4.14+
Reported-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/lib/code-patching.c