On Fri 2019-10-18 15:03:42, Jessica Yu wrote:
+++ Miroslav Benes [16/10/19 15:29 +0200]:
> On Wed, 16 Oct 2019, Miroslav Benes wrote:
> Thinking about it more... crazy idea. I think we could leverage these new
> ELF .text per vmlinux/module sections for the reinvention I was talking
> about. If we teach module loader to relocate (and apply alternatives and
> so on, everything in arch-specific module_finalize()) not the whole module
> in case of live patch modules, but separate ELF .text sections, it could
> solve the issue with late module patching we have. It is a variation on
> Steven's idea. When live patch module is loaded, only its section for
> present modules would be processed. Then whenever a to-be-patched module
> is loaded, its .text section in all present patch module would be
> The upside is that almost no work would be required on patch modules
> creation side. The downside is that klp_modinfo must stay. Module loader
> needs to be hacked a lot in both cases. So it remains to be seen which
> idea is easier to implement.
> Jessica, do you think it would be feasible?
I think that does sound feasible. I'm trying to visualize how that
would look. I guess there would need to be various livepatching hooks
called during the different stages (apply_relocate_add(),
So maybe something like the following?
When a livepatch module loads:
klp hook: apply .klp.rela.$objname relocations *only* for
already loaded modules
klp hook: apply .klp.arch.$objname changes for already loaded modules
klp hook: only enable ro/x for .klp.text.$objname for already
Just for record. We should also set ro for the not-yet used
.klp.text.$objname at this stage so that it can't be modified
easily "by accident".