]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 May 2019 14:15:54 +0000 (16:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 May 2019 14:15:54 +0000 (16:15 +0200)
added patches:
powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch

queue-4.4/powerpc-lib-fix-book3s-32-boot-failure-due-to-code-patching.patch [new file with mode: 0644]
queue-4.4/series

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 (file)
index 0000000..ba92713
--- /dev/null
@@ -0,0 +1,43 @@
+From b45ba4a51cde29b2939365ef0c07ad34c8321789 Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Mon, 1 Oct 2018 12:21:10 +0000
+Subject: powerpc/lib: fix book3s/32 boot failure due to code patching
+
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+
+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 <christophe.leroy@c-s.fr>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ 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;
+       }
index 3468a605d2838049a36a435acf3b1466c3ed2053..5ba263218c40ee8a58e144ff3f911958adbafc78 100644 (file)
@@ -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