]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Feb 2019 12:10:53 +0000 (13:10 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Feb 2019 12:10:53 +0000 (13:10 +0100)
added patches:
x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch

queue-4.9/series
queue-4.9/x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch [new file with mode: 0644]

index adbc273dc1df61b306d98ab470e76027dff3230d..ace384169beaa1a1095ea177332b82ade06aa69b 100644 (file)
@@ -14,3 +14,4 @@ tcp-clear-icsk_backoff-in-tcp_write_queue_purge.patch
 vxlan-test-dev-flags-iff_up-before-calling-netif_rx.patch
 net-stmmac-fix-a-race-in-eee-enable-callback.patch
 net-ipv4-use-a-dedicated-counter-for-icmp_v4-redirect-packets.patch
+x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch
diff --git a/queue-4.9/x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch b/queue-4.9/x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch
new file mode 100644 (file)
index 0000000..9ace38e
--- /dev/null
@@ -0,0 +1,47 @@
+From chenzefeng2@huawei.com  Thu Feb 21 12:46:27 2019
+From: "chenzefeng (A)" <chenzefeng2@huawei.com>
+Date: Wed, 20 Feb 2019 12:37:54 +0000
+Subject: [PATCH] x86: livepatch: Treat R_X86_64_PLT32 as R_X86_64_PC32
+To: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
+Cc: "stable@vger.kernel.org" <stable@vger.kernel.org>, Petr Mladek <pmladek@suse.com>, Jiri Kosina <jikos@kernel.org>, "hjl.tools@gmail.com" <hjl.tools@gmail.com>, "chengjian (D)" <cj.chengjian@huawei.com>
+Message-ID: <79A62BFA453EFB42B7A4E40AD8F3A2264F2AB257@DGGEMA503-MBX.china.huawei.com>
+
+Signed-off-by: chenzefeng <chenzefeng2@huawei.com>
+
+On x86-64, for 32-bit PC-relacive branches, we can generate PLT32
+relocation, instead of PC32 relocation. and R_X86_64_PLT32 can be
+treated the same as R_X86_64_PC32 since linux kernel doesn't use PLT.
+
+commit b21ebf2fb4cd ("x86: Treat R_X86_64_PLT32 as R_X86_64_PC32") been
+fixed for the module loading, but not fixed for livepatch relocation,
+which will fail to load livepatch with the error message as follow:
+relocation failed for symbol <symbol name> at <symbol address>
+
+This issue only effacted the kernel version from 4.0 to 4.6, becauce the
+function klp_write_module_reloc is introduced by: commit b700e7f03df5
+("livepatch: kernel: add support for live patching") and deleted by:
+commit 425595a7fc20 ("livepatch: reuse module loader code to write
+relocations")
+
+Signed-off-by: chenzefeng <chenzefeng2@huawei.com>
+Reviewed-by: Petr Mladek <pmladek@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/livepatch.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/x86/kernel/livepatch.c b/arch/x86/kernel/livepatch.c index d1d35cc..579f8f8 100644
+--- a/arch/x86/kernel/livepatch.c
++++ b/arch/x86/kernel/livepatch.c
+@@ -58,6 +58,7 @@ int klp_write_module_reloc(struct module *mod, unsigned long type,
+               val = (s32)value;
+               break;
+       case R_X86_64_PC32:
++      case R_X86_64_PLT32:
+               val = (u32)(value - loc);
+               break;
+       default:
+--
+1.8.5.6
+
+