All of lore.kernel.org
 help / color / mirror / Atom feed
From: "chenzefeng (A)" <chenzefeng2@huawei.com>
To: "stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: [PATCH] x86: livepatch: Treat R_X86_64_PLT32 as R_X86_64_PC32
Date: Tue, 19 Feb 2019 08:20:00 +0000	[thread overview]
Message-ID: <79A62BFA453EFB42B7A4E40AD8F3A2264F2AA53C@DGGEMA503-MBX.china.huawei.com> (raw)

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>
---
 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


             reply	other threads:[~2019-02-19  8:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-19  8:20 chenzefeng (A) [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-02-20 12:37 [PATCH] x86: livepatch: Treat R_X86_64_PLT32 as R_X86_64_PC32 chenzefeng (A)
2019-02-21  8:42 ` Petr Mladek
2019-02-21 11:47 ` gregkh
2019-02-19  8:16 chenzefeng (A)
2019-02-15  2:01 chenzefeng (A)
2019-02-15  7:28 ` Jiri Kosina
2019-02-18  5:29   ` chengjian (D)
2019-02-18  9:22     ` Petr Mladek
2019-02-18 11:47 ` gregkh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=79A62BFA453EFB42B7A4E40AD8F3A2264F2AA53C@DGGEMA503-MBX.china.huawei.com \
    --to=chenzefeng2@huawei.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.