All of lore.kernel.org
 help / color / mirror / Atom feed
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 8/8] selftests/livepatch: Add test for function conflict across provides
Date: Wed, 2 Sep 2026 17:51:46 +0200	[thread overview]
Message-ID: <aphGEn8RDWQx_yEA@pathway.suse.cz> (raw)
In-Reply-To: <20260825114641.80452-9-laoar.shao@gmail.com>

On Tue 2026-08-25 19:46:41, Yafang Shao wrote:
> Livepatches with different provides ids must not modify the same
> function. If a second livepatch attempts to modify a function that
> has already been modified by a loaded livepatch with a different
> provides id, the loading will fail. If the second livepatch shares
> the same provides id, or if its obsoletes list contains the first
> livepatch's provides id, it will load successfully and replace the
> first one.
> 
> Add a new test module test_klp_provides.c that patches meminfo_proc_show
> (the same function as test_klp_atomic_replace) so that the two modules
> can be loaded with different provides ids to test the function conflict
> detection.
> 
> Add three test scenarios to test-provides.sh:
> 
> 1. Function conflict across provides: load test_klp_atomic_replace with
>    provides=1, then attempt to load test_klp_provides with provides=2.
>    The second livepatch is rejected because livepatches with different
>    provides ids and no obsoletes must not modify the same function.
> 
> 2. Function replace within same provides: load test_klp_atomic_replace
>    with provides=1, then load test_klp_provides with provides=1. The
>    second livepatch loads successfully and replaces the first one
>    because they share the same provides id.
> 
> 3. Function replace across provides with obsoletes: load
>    test_klp_atomic_replace with provides=1, then load test_klp_provides
>    with provides=2 and obsoletes=[1]. The second livepatch loads
>    successfully and replaces the first one because the obsoletes list
>    allows it to replace a livepatch with a different provides id.
> 
> Assisted-by: Comagic:DeepSeek-V4-Flash
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> ---
>  .../livepatch/test-provides-obsoletes.sh      | 110 ++++++++++++++++++
>  .../selftests/livepatch/test_modules/Makefile |   1 +
>  .../test_modules/test_klp_provides.c          |  72 ++++++++++++
>  3 files changed, 183 insertions(+)
>  create mode 100644 tools/testing/selftests/livepatch/test_modules/test_klp_provides.c
> 
> diff --git a/tools/testing/selftests/livepatch/test-provides-obsoletes.sh b/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> index f9a9f9b28490..be54e8d2c889 100755
> --- a/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> +++ b/tools/testing/selftests/livepatch/test-provides-obsoletes.sh
> @@ -8,6 +8,7 @@ MOD_ATOMIC=test_klp_atomic_replace
>  MOD_LIVEPATCH=test_klp_livepatch
>  MOD_STATE=test_klp_state
>  MOD_STATE2=test_klp_state2
> +MOD_PROVIDES=test_klp_provides

The new module duplicates test_klp_atomic_replace.c. We want to avoid
this. Please, create the copy module by using

    #include <original_module.c>

Also it would really help to use a better naming. As I suggeted in
the review of the 6th patch:

   + test_klp_proc_meminfo_livepatch
   + test_klp_proc_meminfo_livepatch2

or

   + test_klp_meminfo_lp
   + test_klp_meminfo_lp2

Then it will be clear that these are liveapatches and they modify
the same function.

Then it would be more obvious when they should succeed and
when fails:

# same function, replaced by provides
load_lp $MOD_MEMINFO_LP provides=1
load_lp $MOD_MEMINFO_LP2 provides=1

# same function, can't be loaded  in parallel
load_lp $MOD_MEMINFO_LP provides=1
load_failing_mod $MOD_MEMINFO_LP2 provides=2

# different functions, atomic replace works (nops)
load_lp $MOD_MEMINFO_LP provides=1
load_lp $MOD_CMDLINE_LP provides=1

# different functions, install in parallel
load_lp $MOD_MEMINFO_LP provides=1
load_lp $MOD_CMDLINE_LP provides=2

Best Regards,
Petr

  reply	other threads:[~2026-09-02 15:51 UTC|newest]

Thread overview: 53+ 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-09-08 14:24   ` Miroslav Benes
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-09-08 14:24   ` Miroslav Benes
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-06  8:34           ` Yafang Shao
2026-09-09 12:32         ` Miroslav Benes
2026-09-09 18:45           ` Song Liu
2026-09-10  8:31             ` Miroslav Benes
2026-09-10  9:17               ` Yafang Shao
2026-09-10 21:59               ` 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
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 [this message]
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=aphGEn8RDWQx_yEA@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 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.