All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: live-patching@vger.kernel.org, "Song Liu" <song@kernel.org>
Cc: jikos@kernel.org, jpoimboe@kernel.org, peterz@infradead.org,
	mbenes@suse.cz, pmladek@suse.com, joe.lawrence@redhat.com,
	puranjay@kernel.org, kernel-team@meta.com
Subject: Re: [PATCH v3 21/58] objtool/klp: Add test for rejecting module-owned static call keys
Date: Tue, 15 Sep 2026 00:05:15 +0000	[thread overview]
Message-ID: <20260915000515.B4B341F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914230355.3422996-22-song@kernel.org>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] objtool/klp test: manual .static_call_sites generation violates test design
- [Low] objtool/klp test: test-static-call-module-key.sh misses validation assertions
--

commit 07aa87afa035746af6f6fbcdd7b1840b00a88b3e
Author: Puranjay Mohan <puranjay@kernel.org>

objtool/klp: Add test for rejecting module-owned static call keys

This patch adds a test to verify that klp diff correctly accepts vmlinux-owned
static call keys and rejects module-owned ones. It introduces a C fixture
implementing the static call site and a bash script to test both paths.

> diff --git a/tools/objtool/tests/generic/fixtures/static_call.c b/tools/objtool/tests/generic/fixtures/static_call.c
> index 0000000000000..5975986c92eb0
> --- /dev/null
> +++ b/tools/objtool/tests/generic/fixtures/static_call.c
[ ... ]
> @@ -0,0 +1,53 @@
[ ... ]
> +int target(int x)
> +{
> +#if defined(NEW_CALL) && !defined(PATCHED)
> +	/* The original has no static call at all. */
> +	return x + 1;
> +#else
> +	__asm__ volatile(
> +		"1:	nop\n\t"
> +		".pushsection	.static_call_sites, \"aw\"\n\t"

[Severity: Low]
Does this manual instantiation of the static_call_sites section bypass objtool's
check generation?

According to klp-write-tests.txt documentation, tests should not hand-write
what objtool generates. This creates a synthetic edge case that artificially
omits sh_entsize and adds .discard.annotate_data boundaries, which might not
reflect how production objects are built.

> +		".balign	8\n\t"
> +		"912:\n\t"
[ ... ]
> diff --git a/tools/objtool/tests/generic/test-static-call-module-key.sh b/tools/objtool/tests/generic/test-static-call-module-key.sh
> index 0000000000000..9ab373e90e10e
> --- /dev/null
> +++ b/tools/objtool/tests/generic/test-static-call-module-key.sh
[ ... ]
> @@ -0,0 +1,25 @@
[ ... ]
> +setup
> +build_pair static_call.c
> +
> +has_input_section orig.o .static_call_sites ||
> +	probe_skip "fixture produced no .static_call_sites on this arch"
> +
> +run_diff
> +assert_patched target

[Severity: Low]
Does this successfully verify that the section was extracted and patched?

Without a check like assert_section .static_call_sites, this test might pass
vacuously if klp diff silently drops the static call section.

> +
> +rm -f "$workdir/out.o"
> +build_pair static_call.c -DMODNAME='"klp_testmod"'
> +run_diff 255
> +
> +diff_log | grep -q 'unsupported static call key __SCK__klp_test_call' ||
> +	fail "expected rejection, got: $(diff_log | tail -1)"
> +

[Severity: Low]
Should there be a check here to ensure the malformed output object wasn't
leaked?

Usually module rejection paths are validated with something like
[ -e "$workdir/out.o" ] && fail to ensure the file was not produced.

> +pass "module-owned static call key rejected, vmlinux-owned accepted"

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914230355.3422996-1-song@kernel.org?part=21

  reply	other threads:[~2026-09-15  0:05 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14 23:02 [PATCH v3 00/58] Unit test framework for klp-build toolchain Song Liu
2026-09-14 23:02 ` [PATCH v3 01/58] objtool: Add test harness for the klp subcommands Song Liu
2026-09-14 23:28   ` sashiko-bot
2026-09-15 18:26     ` Song Liu
2026-09-14 23:02 ` [PATCH v3 02/58] objtool/klp: Check the klp test environment once, before any test Song Liu
2026-09-14 23:03 ` [PATCH v3 03/58] objtool/klp: Group the klp tests by architecture Song Liu
2026-09-14 23:03 ` [PATCH v3 04/58] objtool/klp: Classify klp test outcomes Song Liu
2026-09-14 23:03 ` [PATCH v3 05/58] objtool/klp: Build klp test fixtures through the harness Song Liu
2026-09-14 23:34   ` sashiko-bot
2026-09-15 19:26     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 06/58] objtool/klp: Grow the klp test harness vocabulary Song Liu
2026-09-14 23:35   ` sashiko-bot
2026-09-15 20:30     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 07/58] objtool/klp: Give each run one working directory, one per test inside it Song Liu
2026-09-14 23:34   ` sashiko-bot
2026-09-15 20:51     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 08/58] objtool/klp: Run the klp tests under set -u Song Liu
2026-09-14 23:03 ` [PATCH v3 09/58] objtool/klp: Document the klp test harness Song Liu
2026-09-14 23:03 ` [PATCH v3 10/58] objtool: Keep failing test workdirs by default Song Liu
2026-09-14 23:41   ` sashiko-bot
2026-09-15 20:56     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 11/58] objtool: Forward toolchain variables to the klp test runner Song Liu
2026-09-14 23:45   ` sashiko-bot
2026-09-15 21:04     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 12/58] objtool/klp: Add test for rejecting changed data Song Liu
2026-09-14 23:03 ` [PATCH v3 13/58] objtool/klp: Add test for newly introduced data Song Liu
2026-09-14 23:03 ` [PATCH v3 14/58] objtool/klp: Add test for newly introduced functions Song Liu
2026-09-14 23:46   ` sashiko-bot
2026-09-15 21:56     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 15/58] objtool/klp: Add test for static local correlation Song Liu
2026-09-14 23:03 ` [PATCH v3 16/58] objtool/klp: Add test for cold function halves Song Liu
2026-09-14 23:03 ` [PATCH v3 17/58] objtool/klp: Add test for special section extraction Song Liu
2026-09-14 23:03 ` [PATCH v3 18/58] objtool/klp: Add test for selective " Song Liu
2026-09-14 23:03 ` [PATCH v3 19/58] objtool/klp: Add test for jump table key relocations Song Liu
2026-09-14 23:03 ` [PATCH v3 20/58] objtool/klp: Add test for rejecting module-owned static branch keys Song Liu
2026-09-14 23:03 ` [PATCH v3 21/58] objtool/klp: Add test for rejecting module-owned static call keys Song Liu
2026-09-15  0:05   ` sashiko-bot [this message]
2026-09-15 21:51     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 22/58] objtool/klp: Add test for symids in discarded sections Song Liu
2026-09-14 23:03 ` [PATCH v3 23/58] objtool/klp: Add test for rejecting references to init code/data Song Liu
2026-09-15  0:07   ` sashiko-bot
2026-09-15 23:11     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 24/58] objtool/klp: Add test for correlation across ThinLTO name mangling Song Liu
2026-09-14 23:03 ` [PATCH v3 25/58] objtool/klp: Add test for objects without .modinfo Song Liu
2026-09-14 23:03 ` [PATCH v3 26/58] objtool/klp: Add test for unchecksummed input Song Liu
2026-09-14 23:03 ` [PATCH v3 27/58] objtool/klp: Add klp diff and post-link regression tests Song Liu
2026-09-14 23:03 ` [PATCH v3 28/58] objtool/klp: Add test for klp reloc section naming in module objects Song Liu
2026-09-14 23:03 ` [PATCH v3 29/58] objtool/klp: Add test for vmlinux relocs in a patched module Song Liu
2026-09-14 23:03 ` [PATCH v3 30/58] objtool/klp: Add test for Module.symvers path normalization Song Liu
2026-09-14 23:03 ` [PATCH v3 31/58] objtool/klp: Add test for the contents of the klp_funcs list Song Liu
2026-09-14 23:03 ` [PATCH v3 32/58] objtool/klp: Add test for EXPORT_SYMBOL_FOR_MODULES references Song Liu
2026-09-14 23:03 ` [PATCH v3 33/58] objtool/klp: Add test for new references to exported symbols Song Liu
2026-09-14 23:03 ` [PATCH v3 34/58] objtool/klp: Add test for empty x86 alternative replacements Song Liu
2026-09-14 23:03 ` [PATCH v3 35/58] objtool/klp: Add test for recorded checksum values Song Liu
2026-09-14 23:03 ` [PATCH v3 36/58] objtool/klp: Add test for position-independent checksums Song Liu
2026-09-14 23:03 ` [PATCH v3 37/58] objtool/klp: Add test for sympos in module objects Song Liu
2026-09-14 23:03 ` [PATCH v3 38/58] objtool/klp: Add test for sympos resolved against a linked vmlinux Song Liu
2026-09-14 23:03 ` [PATCH v3 39/58] objtool/klp: Add test for static locals which must not be correlated Song Liu
2026-09-14 23:03 ` [PATCH v3 40/58] objtool/klp: Add test for __bug_table, __ex_table and __mcount_loc extraction Song Liu
2026-09-15  0:26   ` sashiko-bot
2026-09-15 23:27     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 41/58] objtool/klp: Add test for kCFI prefix symbols and traps Song Liu
2026-09-14 23:03 ` [PATCH v3 42/58] objtool/klp: Add test for symbols whose linkage the patch changes Song Liu
2026-09-14 23:03 ` [PATCH v3 43/58] objtool/klp: Test rejection of a file-local static branch key Song Liu
2026-09-14 23:03 ` [PATCH v3 44/58] objtool/klp: Test a hand-built livepatch module's static call keys Song Liu
2026-09-14 23:03 ` [PATCH v3 45/58] objtool/klp: Test text annotations on alternative replacements Song Liu
2026-09-14 23:03 ` [PATCH v3 46/58] objtool/klp: Add test for data object checksums Song Liu
2026-09-14 23:03 ` [PATCH v3 47/58] objtool/klp: Add test for symbols with no checksum entry of their own Song Liu
2026-09-14 23:03 ` [PATCH v3 48/58] objtool/klp: Add test for a static branch introduced by the patch Song Liu
2026-09-14 23:03 ` [PATCH v3 49/58] objtool/klp: Add test for tracepoint and pr_debug static branch keys Song Liu
2026-09-15  0:32   ` sashiko-bot
2026-09-14 23:03 ` [PATCH v3 50/58] objtool/klp: Add test for a static call introduced by the patch Song Liu
2026-09-14 23:03 ` [PATCH v3 51/58] objtool/klp: Add test for instruction operand checksums Song Liu
2026-09-14 23:03 ` [PATCH v3 52/58] objtool/klp: Add test for alternative replacement code in checksums Song Liu
2026-09-14 23:03 ` [PATCH v3 53/58] objtool/klp: Add test for the alignment of cloned data sections Song Liu
2026-09-14 23:03 ` [PATCH v3 54/58] objtool/klp: Add test for a patch which strips a data annotation Song Liu
2026-09-14 23:03 ` [PATCH v3 55/58] objtool/klp: Add test for absolute and __ADDRESSABLE symbols Song Liu
2026-09-15  0:53   ` sashiko-bot
2026-09-15 23:29     ` Song Liu
2026-09-14 23:03 ` [PATCH v3 56/58] objtool/klp: Add test for UBSAN metadata in an unchanged function Song Liu
2026-09-14 23:03 ` [PATCH v3 57/58] objtool/klp: Add test for Clang switch jump tables Song Liu
2026-09-14 23:03 ` [PATCH v3 58/58] objtool/klp: Add test for ThinLTO symbols sharing a demangled name Song Liu

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=20260915000515.B4B341F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=jikos@kernel.org \
    --cc=joe.lawrence@redhat.com \
    --cc=jpoimboe@kernel.org \
    --cc=kernel-team@meta.com \
    --cc=live-patching@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=puranjay@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.