From: duwe@lst.de (Torsten Duwe)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/4] arm64: implement live patching
Date: Mon, 22 Oct 2018 16:54:48 +0200 [thread overview]
Message-ID: <20181022145448.GA22918@lst.de> (raw)
In-Reply-To: <alpine.LSU.2.21.1810221452070.13146@pobox.suse.cz>
On Mon, Oct 22, 2018 at 02:53:10PM +0200, Miroslav Benes wrote:
> On Sat, 20 Oct 2018, Ard Biesheuvel wrote:
> > So I suppose this could get interesting in cases where modules are far
> > away from the kernel (i.e., more than -/+ 128 MB). Fortunately, the
> > modules themselves are always placed in a 128 MB window, but this
> > window could be out of reach for branches into the kernel proper. If
> > we find ourselves in the situation where we need to patch calls into
> > the kernel proper to point into this module, this may get interesting,
> > since the PLT entries *must* be allocated along with the module that
> > contains the branch instruction, or the PLT entry itself may be out of
> > range, defeating the purpose.
>
> Hm... Torsten, didn't you have to solve something similar in powerpc case?
At address ranges: that was the TOC pointer issue, that is an array of
addresses and other 64-bit constants with a reference to it kept in a register,
whose value is local to any module. PPC64 needs 5 instructions to load a 64-bit
value immediate, arm has the ldr_l macro. So in short: no. We were discussing a
few nasty tricks to reconstruct the TOC value from the code addresses, but
ended up with a solution that is clean in that respect.
At PLTs: ppc64 uses, IIRC, a regular trampoline slot to get to all called
functions, including ftrace and friends. So for e.g. live patch kernels
the total number, as predetermined, is only incremented by 2. Only the
trampoline _code_ for ftrace was modified.
I assume with "branches" you mean "branch with link" a.k.a a subroutine call?
All references to external symbols are allocated a PLT entry, right?
ftrace / live patching calls are alway intercepted at the called function.
===========--------======---------
The interceptor then uses a special trampoline to go to ftrace_caller, which
does the rest.
Am I missing something?
Torsten
next prev parent reply other threads:[~2018-10-22 14:54 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-01 14:09 [PATCH v3 0/4] arm64 live patching Torsten Duwe
2018-10-01 14:16 ` [PATCH v3 1/4] DYNAMIC_FTRACE configurable with and without REGS Torsten Duwe
2018-10-01 14:52 ` Ard Biesheuvel
2018-10-01 15:03 ` Torsten Duwe
2018-10-01 15:06 ` Ard Biesheuvel
2018-10-01 15:10 ` Torsten Duwe
2018-10-01 15:14 ` Steven Rostedt
2018-10-01 14:16 ` [PATCH v3 2/4] arm64: implement ftrace with regs Torsten Duwe
2018-10-01 15:57 ` Ard Biesheuvel
2018-10-02 10:02 ` Torsten Duwe
2018-10-02 10:39 ` Ard Biesheuvel
2018-10-02 11:27 ` Mark Rutland
2018-10-02 12:18 ` Torsten Duwe
2018-10-02 12:57 ` Mark Rutland
2018-10-01 14:16 ` [PATCH v3 3/4] arm64: implement live patching Torsten Duwe
2018-10-17 13:39 ` Miroslav Benes
2018-10-18 12:58 ` Jessica Yu
2018-10-19 11:59 ` Miroslav Benes
2018-10-19 12:18 ` Jessica Yu
2018-10-19 15:14 ` Miroslav Benes
2018-10-19 13:46 ` Torsten Duwe
2018-10-19 13:52 ` Ard Biesheuvel
2018-10-19 15:21 ` Miroslav Benes
2018-10-20 14:10 ` Ard Biesheuvel
2018-10-22 12:53 ` Miroslav Benes
2018-10-22 14:54 ` Torsten Duwe [this message]
2018-10-23 17:55 ` [PATCH] arm64/module: use mod->klp_info section header information Jessica Yu
2018-10-23 19:32 ` kbuild test robot
2018-10-24 11:57 ` Miroslav Benes
2018-10-25 8:08 ` Petr Mladek
2018-10-25 9:00 ` Miroslav Benes
2018-10-25 11:42 ` Jessica Yu
2018-10-26 17:25 ` [PATCH v2] arm64/module: use mod->klp_info section header information for livepatch modules Jessica Yu
2018-10-29 13:24 ` Miroslav Benes
2018-10-29 13:32 ` Jessica Yu
2018-10-29 15:28 ` Will Deacon
2018-10-30 13:19 ` Jessica Yu
2018-11-01 15:18 ` Miroslav Benes
2018-11-01 16:07 ` Will Deacon
2018-11-05 12:30 ` Ard Biesheuvel
2018-11-05 17:57 ` [PATCH] arm64/module: use plt section indices for relocations Jessica Yu
2018-11-05 18:04 ` Ard Biesheuvel
2018-11-05 18:53 ` [PATCH v2] " Jessica Yu
2018-11-05 18:56 ` Ard Biesheuvel
2018-11-05 19:26 ` Will Deacon
2018-11-05 19:49 ` Jessica Yu
2018-11-06 9:44 ` Miroslav Benes
2018-10-01 14:16 ` [PATCH v3 4/4] arm64: reliable stacktraces Torsten Duwe
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=20181022145448.GA22918@lst.de \
--to=duwe@lst.de \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).