We previously proposed a BPF+livepatch method to enable rapid experimentation with new kernel features without interrupting production workloads:
https://lore.kernel.org/live-patching/[email protected]/ In the resulting discussion, Song and Petr suggested adding a "replace set" to support scenarios where specific livepatches can be selectively replaced or skipped. - Patch #1: Adds replace set support for livepatch functions. - Patch #2~#5: Derived from Petr's original patchset: https://lore.kernel.org/all/[email protected]/ All the selftests are not included in this RFC. Note: Due to a significant refactor in Patch #5, I have omitted Petr's Signed-off-by for that specific patch. Please let me know if this is not the preferred approach. - Patch #6: Adds replace set support for the shadow variable API. Petr Mladek (3): livepatch: Add callbacks for introducing and removing states livepatch: Allow to handle lifetime of shadow variables using the livepatch state livepatch: Remove "data" from struct klp_state Yafang Shao (3): livepatch: Support scoped atomic replace using replace set livepatch: Remove obsolete per-object callbacks livepatch: Support replace_set in shadow variable API .../livepatch/cumulative-patches.rst | 17 +- Documentation/livepatch/livepatch.rst | 23 ++- include/linux/livepatch.h | 30 ++-- include/linux/livepatch_external.h | 62 ++++--- kernel/livepatch/core.c | 51 ++---- kernel/livepatch/core.h | 33 ---- kernel/livepatch/shadow.c | 70 +++++--- kernel/livepatch/state.c | 165 +++++++++++++++++- kernel/livepatch/state.h | 8 + kernel/livepatch/transition.c | 29 +-- scripts/livepatch/init.c | 9 +- scripts/livepatch/klp-build | 14 +- tools/include/linux/livepatch_external.h | 62 ++++--- tools/objtool/klp-diff.c | 16 +- 14 files changed, 373 insertions(+), 216 deletions(-) -- 2.47.3
