From: Greg Kroah-Hartman Date: Wed, 15 May 2019 14:15:54 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v3.18.140~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=de509e2f25590a47161f9b9b7a9e27da79a0f8fd;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch --- diff --git a/queue-4.4/powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch b/queue-4.4/powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch new file mode 100644 index 0000000000..ba927138ee --- /dev/null +++ b/queue-4.4/powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch @@ -0,0 +1,43 @@ +From b45ba4a51cde29b2939365ef0c07ad34c8321789 Mon Sep 17 00:00:00 2001 +From: Christophe Leroy +Date: Mon, 1 Oct 2018 12:21:10 +0000 +Subject: powerpc/lib: fix book3s/32 boot failure due to code patching + +From: Christophe Leroy + +commit b45ba4a51cde29b2939365ef0c07ad34c8321789 upstream. + +Commit 51c3c62b58b3 ("powerpc: Avoid code patching freed init +sections") accesses 'init_mem_is_free' flag too early, before the +kernel is relocated. This provokes early boot failure (before the +console is active). + +As it is not necessary to do this verification that early, this +patch moves the test into patch_instruction() instead of +__patch_instruction(). + +This modification also has the advantage of avoiding unnecessary +remappings. + +Fixes: 51c3c62b58b3 ("powerpc: Avoid code patching freed init sections") +Cc: stable@vger.kernel.org # 4.13+ +Signed-off-by: Christophe Leroy +Signed-off-by: Michael Ellerman +Signed-off-by: Greg Kroah-Hartman + + +--- + arch/powerpc/lib/code-patching.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/lib/code-patching.c ++++ b/arch/powerpc/lib/code-patching.c +@@ -28,7 +28,7 @@ int patch_instruction(unsigned int *addr + int err; + + /* Make sure we aren't patching a freed init section */ +- if (init_mem_is_free && is_init(addr)) { ++ if (*PTRRELOC(&init_mem_is_free) && is_init(addr)) { + pr_debug("Skipping init section patching addr: 0x%px\n", addr); + return 0; + } diff --git a/queue-4.4/series b/queue-4.4/series index 3468a605d2..5ba263218c 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -264,3 +264,4 @@ bonding-fix-arp_validate-toggling-in-active-backup-mode.patch drivers-virt-fsl_hypervisor.c-dereferencing-error-pointers-in-ioctl.patch drivers-virt-fsl_hypervisor.c-prevent-integer-overflow-in-ioctl.patch powerpc-booke64-set-ri-in-default-msr.patch +powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch