In case anybody missed it, the Linux kernel side to make use
of this has also been finished meanwhile. Of course it can not
be accepted without compiler support; and this feature patch
is much more versatile than just Linux kernel live patching
on a single architecture.
How is this supposed to be exploited atomically in RISC arches such as
sparc? In such architectures you usually need to patch several
instructions to load an absolute address into a register.
If a general mechanism is what is intended I would suggest to offer the
possibility of extending the nops _before_ the function entry point,
like in:
(a) nop ! Load address
nop ! Load address
nop ! Load address
nop ! Load address
nop ! Jump to loaded address.
entry:
(b) nop ! PC-relative jump to (a)
save %sp, bleh, %sp
...
So after the live-patcher patches the loading of the destination address
and the jump, it can atomically patch (b) to effectively replace the
implementation of `entry'.
Wdyt?