From: Greg Kroah-Hartman Date: Thu, 21 Feb 2019 12:10:53 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v3.18.136~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91a71d8b7ff675a25b8a575377e29fb6546a1f5b;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch --- diff --git a/queue-4.9/series b/queue-4.9/series index adbc273dc1d..ace384169be 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -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 index 00000000000..9ace38e4ebe --- /dev/null +++ b/queue-4.9/x86-livepatch-treat-r_x86_64_plt32-as-r_x86_64_pc32.patch @@ -0,0 +1,47 @@ +From chenzefeng2@huawei.com Thu Feb 21 12:46:27 2019 +From: "chenzefeng (A)" +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" +Cc: "stable@vger.kernel.org" , Petr Mladek , Jiri Kosina , "hjl.tools@gmail.com" , "chengjian (D)" +Message-ID: <79A62BFA453EFB42B7A4E40AD8F3A2264F2AB257@DGGEMA503-MBX.china.huawei.com> + +Signed-off-by: chenzefeng + +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 at + +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 +Reviewed-by: Petr Mladek +Signed-off-by: Greg Kroah-Hartman +--- + 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 + +