From: Petr Mladek <pmladek@suse.com>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: jpoimboe@kernel.org, jikos@kernel.org, mbenes@suse.cz,
joe.lawrence@redhat.com, song@kernel.org,
live-patching@vger.kernel.org
Subject: Re: [PATCH v7 for-next 7/8] selftests/livepatch: Add test for state ID conflict across provides
Date: Wed, 2 Sep 2026 17:25:17 +0200 [thread overview]
Message-ID: <apg_3dLUGBeCjKoM@pathway.suse.cz> (raw)
In-Reply-To: <20260825114641.80452-8-laoar.shao@gmail.com>
On Tue 2026-08-25 19:46:40, Yafang Shao wrote:
> Livepatches with different provides ids must not share the same state
> id. If a second livepatch attempts to reuse a state id already
> registered by a livepatch with a different provides id, the loading
> will fail. However, if the second livepatch's obsoletes list includes
> the first livepatch's provides id, the second livepatch replaces the
> first one and may reuse the same state id.
>
> Add provides and obsoletes module parameters to test_klp_state.c and
> test_klp_state2.c (guarded by #ifndef KLP_HAS_REPLACE) so that they
> can be loaded with different provides ids and obsoletes ids.
>
> Add a "state id conflict across provides" test scenario to
> test-provides.sh:
>
> - Load test_klp_state with provides=1, which registers state ID 1.
> - Attempt to load test_klp_state2 with provides=2, which reuses the
> same state ID 1. The second livepatch is rejected because
> livepatches with different provides ids must not share the same
> state id.
> - Disable and unload the remaining livepatch.
>
> Add a "taking over system state via obsoletes" test scenario to
> test-state.sh:
>
> - Load test_klp_state with provides=10, which registers state ID 1.
> - Load test_klp_state2 with provides=20 obsoletes=10, which reuses the
> same state ID 1. Although the provides ids differ, the second livepatch
> replaces the first one because its obsoletes list includes the first
> livepatch's provides id (10). The state is taken over successfully.
> - Unload the replaced livepatch, then disable and unload the second
> livepatch.
>
> Assisted-by: Comagic:DeepSeek-V4-Flash
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> ---
> .../livepatch/test-provides-obsoletes.sh | 86 +++++++++++++++++++
> .../livepatch/test_modules/test_klp_state.c | 9 ++
> .../livepatch/test_modules/test_klp_state2.c | 19 ++++
> 3 files changed, 114 insertions(+)
>
> diff --git a/tools/testing/selftests/livepatch/test-provides-obsoletes.sh b/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> index 2707457b9133..f9a9f9b28490 100755
> --- a/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> +++ b/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> @@ -6,6 +6,8 @@
>
> MOD_ATOMIC=test_klp_atomic_replace
> MOD_LIVEPATCH=test_klp_livepatch
> +MOD_STATE=test_klp_state
> +MOD_STATE2=test_klp_state2
>
> setup_config
>
> @@ -171,4 +173,88 @@ livepatch: '$MOD_ATOMIC': completing unpatching transition
> livepatch: '$MOD_ATOMIC': unpatching complete
> % rmmod $MOD_ATOMIC"
>
> +# - load a livepatch with provides=1 that registers state ID 1
> +# - try to load another livepatch with provides=2 that reuses the same
> +# state ID. The second one must be rejected because livepatches with
> +# different provides ids must not share the same state id.
> +# - disable and unload the remaining livepatch
> +
> +start_test "state id conflict across provides"
> +
> +load_lp $MOD_STATE provides=1
> +load_failing_mod $MOD_STATE2 provides=2
It is not obvious why it should fail because we do not know the used
state id. It might be better to define it via a parameter. It would
even allow to test more variants:
# same state, same provides
load_lp $MOD_STATE_LP1 state=1 provides=1
load_lp $MOD_STATE_LP2 state=1 provides=1
# same state, misc provides
load_lp $MOD_STATE_LP1 state=1 provides=1
load_failing_mod $MOD_STATE_LP2 state=1 provides=2
# same states, replaced by obsoletes
load_lp $MOD_STATE_LP1 state=1 provides=1
load_lp $MOD_STATE_LP2 state=1 provides=2 obsoletes=1
# misc states, same provides
load_lp $MOD_STATE_LP1 state=1 provides=1
load_failing_mod $MOD_STATE_LP2 state=2 provides=1
# misc states, misc provides
load_lp $MOD_STATE_LP1 state=1 provides=1
load_lp $MOD_STATE_LP2 state=2 provides=2
Best Regards,
Petr
next prev parent reply other threads:[~2026-09-02 15:25 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 11:46 [PATCH v7 for-next 0/8] livepatch: Introduce replace set support Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 1/8] livepatch: Make klp_find_func() non static Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 2/8] livepatch: Call klp_init_patch_early() earlier Yafang Shao
2026-08-25 12:06 ` sashiko-bot
2026-08-25 12:11 ` Yafang Shao
2026-08-27 23:57 ` Josh Poimboeuf
2026-08-28 2:24 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 3/8] livepatch: Implement replace set for scoped atomic replace Yafang Shao
2026-08-25 11:59 ` sashiko-bot
2026-08-25 12:10 ` Yafang Shao
2026-08-28 0:26 ` Josh Poimboeuf
2026-08-28 3:03 ` Yafang Shao
2026-08-28 3:39 ` Josh Poimboeuf
2026-08-28 5:42 ` Yafang Shao
2026-09-02 7:31 ` Replace rules: was: " Petr Mladek
2026-09-02 9:40 ` Yafang Shao
2026-09-02 11:50 ` Yafang Shao
2026-09-03 10:01 ` Petr Mladek
2026-09-06 2:58 ` Yafang Shao
2026-09-03 9:27 ` Petr Mladek
2026-09-03 21:18 ` Song Liu
2026-09-02 7:34 ` documentation: " Petr Mladek
2026-09-02 9:50 ` Yafang Shao
2026-09-03 7:30 ` Petr Mladek
2026-09-02 7:37 ` code cleanup: " Petr Mladek
2026-09-02 9:52 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 4/8] livepatch: Deprecate stack_order Yafang Shao
2026-08-28 0:29 ` Josh Poimboeuf
2026-08-28 3:14 ` Yafang Shao
2026-09-02 12:01 ` Petr Mladek
2026-09-02 12:20 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 5/8] selftests/livepatch: Adapt atomic replace tests to provides/obsoletes Yafang Shao
2026-08-28 0:31 ` Josh Poimboeuf
2026-08-28 3:56 ` Yafang Shao
2026-09-02 13:45 ` Petr Mladek
2026-09-03 3:23 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 6/8] selftests/livepatch: Add provides/obsoletes test scenarios Yafang Shao
2026-09-02 15:15 ` Petr Mladek
2026-09-03 5:43 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 7/8] selftests/livepatch: Add test for state ID conflict across provides Yafang Shao
2026-09-02 15:25 ` Petr Mladek [this message]
2026-09-03 5:44 ` Yafang Shao
2026-08-25 11:46 ` [PATCH v7 for-next 8/8] selftests/livepatch: Add test for function " Yafang Shao
2026-09-02 15:51 ` Petr Mladek
2026-09-03 5:48 ` Yafang Shao
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=apg_3dLUGBeCjKoM@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@kernel.org \
--cc=laoar.shao@gmail.com \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--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