Scroll to navigation

klp-build(1) General Commands Manual klp-build(1)

NAME

klp-build - the kernel livepatching creation tool

SYNOPSIS

klp-build <command> [-h] [-n NAME] [--filter FILTER]

DESCRIPTION

klp-build is a tool meant for automating the whole process of creating and testing livepatches for the Linux kernel (SLE edition). To reduce the burden of livepatch developement, klp-build is also capable of checking which codestreams are vulnerable, batching multiple codestreams in parallel, and remotely building and running tests.

OPTIONS

Generic options available for all commands:

Show command's help message and exit.
The livepatch name. This will be the directory name of the resulting livepatches.
List of accepted codestreams. Must be specified in regex format. Example: "15.3u[0-9]+|15.6u0"

COMMANDS

In the scan, klp-build does a shallow analysis of the given CVE, searching for already patched codestreams and reporting those that most likley are still affected by the bug. This subcommand does not store any data, as it is mainly targeted for automation and not for livepatch development. For the latter see the setup subcommand.
The CVE to be analyzed.
During the setup, klp-build analysis each codestream in order to identify those affected by the indicated CVE. Note that in this phase a lot of per-codestream data is generated and stored for future use.
The CVE assigned to this livepatch.
The kernel CONFIG used to build the object to be livepatched.
Do not check for already patched codestreams, do the setup for all non filtered codestreams.
Codestreams affected by the CVE. Can be used as a regex, like, "15.u[34]".
File and functions to be livepatched. Can be set multiple times. The format is: --file-funcs file/path.c func1 func2... --file-funcs file/patch2.c func1 func2...
Module, file and functions to be livepatched. Can be set multiple times. The format is: --mod-file-funcs module1 file/path.c func1 func2... --mod-file-funcs module2 file/patch2.c func1 func2...
Conf, module, file and functions to be livepatched. Can be set multiple times. The format is: --conf-mod-file-funcs conf1 module1 file/path.c func1 func2... --conf-mod-file-funcs conf2 module2 file/patch2.c func1 func2...
The module that will be livepatched for all files. If empty, vmlinux will be livepatched instead.
Supported architectures for this livepatch.
List of excluded codestreams. Must be specified in regex format. Example: "15.3u[0-9]+|15.6u0"

check-inline

Codestream to check the inlined symbol.
File to be checked.
Symbol to be found.
In this phase klp-build creates the livepatch for each affected codestream based on the data generated during the setup. Results may differ greatly depending on the back-end tool selected for the livepatch creation.
Functions to be copied into the livepatch instead of externalizing them. Useful to make sure to include symbols that are optimized in different architectures.
Apply patches found by get-patches command, if they exist.
Apply diff on two different codestreams.
Extract patches from kgraft-patches (see the SEE ALSO section).
Version to be added, like vX.
Find and list the kernel versions with a backported fix to the indicated CVE.
CVE number to search for related backported patches.
Remove livepatch packages from SUSE's Build Service.
Generates a tar archive per supported architecture containing scripts and files that can later be used to run tests in the desired test benchs.
Push the generated livetpatch packages to SUSE's Build Service. By doing so, klp-build can automate the building phase for each codestream and architecture.
Wait until all codestreams builds are finished.
Check the status of the livepatch building phase initiated by the push command.
Wait until all codestreams builds are finished.
Get build logs from SUSE'S Build Service.
The codestream to get the log from.
Build architecture.

FILES

~/.config/klp-build/config
Personal configuration file
~/klp/livepatches
Default directory where the livepatch data will be placed, including the data generated by the different stages of the livepatch creation
~/klp/data
Default directory where the dowloaded source code will be placed

EXAMPLES

Check if the codestreams for SLE 15.5 x86_64 and ppc64le are affected by CVE-2022-1048. This CVE affects snd_pcm_attach_substream() and snd_pcm_detach_substream() functions, located in the kernel module snd-pcm.

$ klp-build setup --name bsc1197597 --cve 2022-1048 --mod snd-pcm --conf CONFIG_SND_PCM --file-funcs sound/core/pcm.c snd_pcm_attach_substream snd_pcm_detach_substream --codestreams '15.5' --archs x86_64 ppc64le

SEE ALSO

SUSE's kgraft-patches public repository: https://github.com/SUSE/kernel-livepatch

SUSE's kernel-source public repository: https://github.com/SUSE/kernel-source

klp-ccp(1)

AUTHOR

Contributors to the klp-build project. See the project’s GIT history for the complete list.

DISTRIBUTION

The latest version of klp-build may be downloaded from https://github.com/SUSE/klp-build