public inbox for live-patching@vger.kernel.org
 help / color / mirror / Atom feed
From: Joe Lawrence <joe.lawrence@redhat.com>
To: live-patching@vger.kernel.org
Cc: Josh Poimboeuf <jpoimboe@kernel.org>, Song Liu <song@kernel.org>,
	Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>,
	Petr Mladek <pmladek@suse.com>
Subject: Re: [PATCH v3 09/13] livepatch/klp-build: fix version mismatch when short-circuiting
Date: Tue, 17 Feb 2026 11:17:00 -0500	[thread overview]
Message-ID: <aZSUfFUfpUYIbuiA@redhat.com> (raw)
In-Reply-To: <20260217160645.3434685-10-joe.lawrence@redhat.com>

On Tue, Feb 17, 2026 at 11:06:40AM -0500, Joe Lawrence wrote:
> The klp-build script overrides the kernel's setlocalversion script to
> freeze the version string.  This prevents the build system from appending
> "+" or "-dirty" suffixes between original and patched kernel builds.
> 
> However, a version mismatch may still occur when running successive
> klp-build commands using the short-circuit option (-S 2):
> 
> - Initial Run (-T): The real setlocalversion runs once.  It is then
>   replaced by a fixed-string copy.  On exit, the original script is
>   restored.
> - Subsequent Runs (-S 2): The tree contains the original setlocalversion
>   script again.  When set_kernelversion() is called, it may generate a
>   different version string because the tree state has changed (e.g.,
>   include/config/auto.conf now exists).  This causes patched kernel
>   builds to use a version string that differs from the original.
> 
> Fix this by restoring the saved override when SHORT_CIRCUIT >= 2.  This
> ensures that subsequent patched builds reuse the localversion from the
> initial klp-build run.
> 
> Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
> ---
>  scripts/livepatch/klp-build | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/scripts/livepatch/klp-build b/scripts/livepatch/klp-build
> index 60c7635e65c1..6d3adadfc394 100755
> --- a/scripts/livepatch/klp-build
> +++ b/scripts/livepatch/klp-build
> @@ -291,17 +291,26 @@ set_module_name() {
>  
>  # Hardcode the value printed by the localversion script to prevent patch
>  # application from appending it with '+' due to a dirty working tree.
> +# When short-circuiting at step 2 or later, restore the saved override from
> +# a prior run instead of recomputing (avoids version mismatch with orig objects).
>  set_kernelversion() {
>  	local file="$SRC/scripts/setlocalversion"
>  	local localversion
>  
>  	stash_file "$file"
> +	if (( SHORT_CIRCUIT >= 2 )); then
> +		[[ ! -f "$TMP_DIR/setlocalversion.override" ]] && \
> +			die "previous setlocalversion.override not found"
> +		cp -f "$TMP_DIR/setlocalversion.override" "$SRC/scripts/setlocalversion"
> +		return 0
> +	fi
>  
>  	localversion="$(cd "$SRC" && make --no-print-directory kernelversion)"
>  	localversion="$(cd "$SRC" && KERNELVERSION="$localversion" ./scripts/setlocalversion)"
>  	[[ -z "$localversion" ]] && die "setlocalversion failed"
>  
>  	sed -i "2i echo $localversion; exit 0" scripts/setlocalversion
> +	cp -f "$SRC/scripts/setlocalversion" "$TMP_DIR/setlocalversion.override"
>  }
>  
>  get_patch_input_files() {
> -- 
> 2.53.0
> 
> 

Maybe I'm starting to see things, but when running 'S 2' builds, I keep
getting "vmlinux.o: changed function: override_release".  It could be
considered benign for quick development work, or confusing.  Seems easy
enough to stash and avoid.

Repro:

Start with a clean source tree, setup some basic configs for klp-build:

  $ make clean && make mrproper
  $ vng --kconfig
  $ ./scripts/config --file .config \
       --set-val CONFIG_FTRACE y \
       --set-val CONFIG_KALLSYMS_ALL y \
       --set-val CONFIG_FUNCTION_TRACER y \
       --set-val CONFIG_DYNAMIC_FTRACE y \
       --set-val CONFIG_DYNAMIC_DEBUG y \
       --set-val CONFIG_LIVEPATCH y
  $ make olddefconfig

Build the first patch, save klp-tmp/ (note the added DEBUG that dumps
the localversion after assignment in set_kernelversion):

  $ ./scripts/livepatch/klp-build -T ~/cmdline-string.patch 
  DEBUG: localversion=6.19.0-gc998cd490c02                           <<
  Validating patch(es)
  Building original kernel
  Copying original object files
  Fixing patch(es)
  Building patched kernel
  Copying patched object files
  Diffing objects
  vmlinux.o: changed function: cmdline_proc_show
  BMuilding patch module: livepatch-cmdline-string.ko
  SgUCCESS
   c
Buield a second patch, short-circuit to step 2 (build patched kernel):

  $ ./scripts/livepatch/klp-build -T -S 2 ~/cmdline-string.patch
  DEBUG: localversion=6.19.0+                                        <<
  Fixing patch(es)
  Building patched kernel
  Copying patched object files
  Diffing objects
  vmlinux.o: changed function: override_release                      <<
  vmlinux.o: changed function: cmdline_proc_show
  Building patch module: livepatch-cmdline-string.ko
  SUCCESS

--
Joe


  reply	other threads:[~2026-02-17 16:17 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-17 16:06 [PATCH v3 00/13] livepatch-klp-build: small fixups and enhancements Joe Lawrence
2026-02-17 16:06 ` [PATCH v3 01/13] objtool/klp: honor SHF_MERGE entry alignment in elf_add_data() Joe Lawrence
2026-02-17 16:14   ` Joe Lawrence
2026-03-05  2:33     ` Josh Poimboeuf
2026-03-10 14:02       ` Joe Lawrence
2026-03-10 16:34         ` Josh Poimboeuf
2026-02-17 16:06 ` [PATCH v3 02/13] objtool/klp: fix mkstemp() failure with long paths Joe Lawrence
2026-02-17 17:45   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 03/13] livepatch/klp-build: support patches that add/remove files Joe Lawrence
2026-02-17 17:52   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 04/13] livepatch/klp-build: switch to GNU patch and recountdiff Joe Lawrence
2026-02-17 16:06 ` [PATCH v3 05/13] livepatch/klp-build: add grep-override function Joe Lawrence
2026-02-17 18:22   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 06/13] livepatch/klp-build: add Makefile with check target Joe Lawrence
2026-02-17 18:26   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 07/13] livepatch/klp-build: fix shellcheck complaints Joe Lawrence
2026-02-17 18:30   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 08/13] livepatch/klp-build: improve short-circuit validation Joe Lawrence
2026-02-17 18:29   ` Song Liu
2026-02-17 16:06 ` [PATCH v3 09/13] livepatch/klp-build: fix version mismatch when short-circuiting Joe Lawrence
2026-02-17 16:17   ` Joe Lawrence [this message]
2026-02-17 19:25     ` Song Liu
2026-02-18 15:04       ` Joe Lawrence
2026-02-19  2:52         ` Song Liu
2026-02-23 21:13     ` Josh Poimboeuf
2026-03-03  2:20       ` Joe Lawrence
2026-03-05 22:35         ` Josh Poimboeuf
2026-03-05 22:52           ` [PATCH] klp-build: Fix inconsistent kernel version Josh Poimboeuf
2026-03-10 13:45             ` Joe Lawrence
2026-03-10 16:30               ` Josh Poimboeuf
2026-02-17 16:06 ` [PATCH v3 10/13] livepatch/klp-build: provide friendlier error messages Joe Lawrence
2026-02-17 18:32   ` Song Liu
2026-02-23 21:15   ` Josh Poimboeuf
2026-03-03  2:20     ` Joe Lawrence
2026-02-17 16:06 ` [PATCH v3 11/13] livepatch/klp-build: add terminal color output Joe Lawrence
2026-02-17 16:20   ` Joe Lawrence
2026-02-17 18:45   ` Song Liu
2026-02-23 21:28   ` Josh Poimboeuf
2026-02-23 21:32     ` Josh Poimboeuf
2026-03-03  2:24       ` Joe Lawrence
2026-03-05 20:08         ` Josh Poimboeuf
2026-02-17 16:06 ` [PATCH v3 12/13] livepatch/klp-build: report patch validation drift Joe Lawrence
2026-02-17 19:42   ` Song Liu
2026-02-18 15:09     ` Joe Lawrence
2026-02-23 21:40   ` Josh Poimboeuf
2026-03-03  2:27     ` Joe Lawrence
2026-02-17 16:06 ` [PATCH v3 13/13] livepatch/klp-build: don't look for changed objects in tools/ Joe Lawrence
2026-02-17 19:29   ` Song Liu
2026-02-18 15:18     ` Joe Lawrence
2026-02-19  2:55       ` Song Liu
2026-02-23 21:41   ` Josh Poimboeuf
2026-03-03  2:30     ` Joe Lawrence
2026-03-05 20:10       ` Josh Poimboeuf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aZSUfFUfpUYIbuiA@redhat.com \
    --to=joe.lawrence@redhat.com \
    --cc=jikos@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=live-patching@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=pmladek@suse.com \
    --cc=song@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox