Re: announcing LLpatch: arch-independent live-patch creation
From: Evgenii Shatokhin <hidden>
Date: 2021-08-27 16:08:29
Hi, On 27.08.2021 01:34, Peter Swain wrote:
We have a new userspace live-patch creation tool, LLpatch, paralleling kpatch-build, but without requiring its arch-specific code for ELF analysis and manipulation. We considered extending kpatch-build to a new target architecture (arm64), cluttering its code with details of another architecture’s quirky instruction sequences & relocation modes, and suspected there might be a better way. The LLVM suite already knows these details, and offers llvm-diff, for comparing generated code at the LLVM-IR (internal representation) level, which has access to much more of the code’s _intent_ than kpatch’s create-diff-object is able to infer from ELF-level differences.
Interesting.
LLpatch requires a pre-built kernel tree ("repository"), right?
Does that mean that the kernel should be built with clang first?
Or, perhaps, clang is only used when building the patch itself, while
the kernel can be built with GCC or other compiler used by the given
Linux distro?
Building on this, LLpatch adds namespace analysis, further dead/duplicate code elimination, and creation of patch modules compatible with kernel’s livepatch API. Arm64 is supported - testing against a livepatch-capable v5.12 arm64 kernel, using the preliminary reliable-stacktrace work from madvenka@linux.microsoft.com, LLpatch modules for x86 and arm64 behave identically to the x86 kpatch-build modules, without requiring any additional arch-specific code. On x86, where both tools are available, LLpatch produces smaller patch modules than kpatch, and already correctly handles most of the kpatch test cases, without any arch-specific code. This suggests it can work with any clang-supported kernel architecture. Work is ongoing, collaboration is welcome. See https://github.com/google/LLpatch for further details on the technology and its benefits. Yonghyun Hwang (yonghyun@google.com freeaion@gmail.com) Bill Wendling (morbo@google.com isanbard@gmail.com) Pete Swain (swine@google.com swine@pobox.com) .
Regards, Evgenii