On Wed, Jul 16, 2025 at 5:00 PM Roger Pau Monne <roger....@citrix.com> wrote:
>
> In a livepatch payload relocations will refer to included functions.  If
> that function happens to be a replacement for an existing Xen function, the
> relocations on the livepatch payload will use the newly introduced symbol,
> rather than the old one.  This is usually fine, but if the result of the
> relocation is stored for later use (for example in the domain struct),
> usages of this address will lead to a page-fault once the livepatch is
> reverted.
>
> Implement a second pass over relocations once the list of replaced
> functions has been loaded, and fixup any references to replaced functions
> to use the old symbol address instead of the new one.  There are some
> sections that must be special cased to continue using the new symbol
> address, as those instances must reference the newly added livepatch
> content (for example the alternative patch sites).
>

Would it be possible to fix this at build time instead by generating the
payload such that relocations to changed functions always point at the
Xen function rather than the included function?

This seems preferable to me rather than making the runtime code more
complicated.

Of course, neither approach would fix all cases - if the function is
completely new calling it would still page-fault after reverting the
live patch - so the usual care needs to be taken when creating live
patches.

Ross

Reply via email to