From: Joe Lawrence <joe.lawrence@redhat.com>
To: Petr Mladek <pmladek@suse.com>, Jiri Kosina <jikos@kernel.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Miroslav Benes <mbenes@suse.cz>
Cc: Jason Baron <jbaron@akamai.com>, Jessica Yu <jeyu@kernel.org>,
Evgenii Shatokhin <eshatokhin@virtuozzo.com>,
live-patching@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v10 00/10] livepatch: Atomic replace feature
Date: Wed, 7 Mar 2018 16:55:53 -0500 [thread overview]
Message-ID: <45877626-2d41-4af8-a8ff-5897585122ad@redhat.com> (raw)
In-Reply-To: <20180307082039.10196-1-pmladek@suse.com>
On 03/07/2018 03:20 AM, Petr Mladek wrote:
> The atomic replace allows to create cumulative patches. They
> are useful when you maintain many livepatches and want to remove
> one that is lower on the stack. In addition it is very useful when
> more patches touch the same function and there are dependencies
> between them.
>
>
> Changes against v9:
>
> + Fixed check of valid NOPs for already loaded objects,
> regression introduced in v9 [Joe, Mirek]
> + Allow to replace even disabled patches [Evgenii]
>
> Changes against v8:
>
> + Fixed handling of statically defined struct klp_object
> with empty array of functions [Joe, Mirek]
> + Removed redundant func->new_func assignment for NOPs [Mirek]
> + Improved some wording [Mirek]
>
> [ ... snip ... ]
Hi Petr,
I tried updating the test cases I was adding in "[PATCH v0 0/3]
additional cumulative livepatch doc/samples" and although one of the
cases is better than before, I'm running into a new issue: an expected
pre-unpatch callback is not executed (its obj->patched is false).
Here's the updated test case:
Test 11
-------
- load livepatch
- load second livepatch (atomic replace) <- callbacks ok
- disable second livepatch <- pre-unpatch skipped
- unload livepatch
- unload second livepatch
% insmod samples/livepatch/livepatch-callbacks-demo.ko
[ 2306.806046] livepatch: enabling patch 'livepatch_callbacks_demo'
[ 2306.806048] livepatch: 'livepatch_callbacks_demo': initializing patching transition
[ 2306.806083] livepatch_callbacks_demo: pre_patch_callback: vmlinux
[ 2306.806083] livepatch: 'livepatch_callbacks_demo': starting patching transition
[ 2307.743170] livepatch: 'livepatch_callbacks_demo': completing patching transition
[ 2307.743317] livepatch_callbacks_demo: post_patch_callback: vmlinux
[ 2307.743319] livepatch: 'livepatch_callbacks_demo': patching complet
% insmod samples/livepatch/livepatch-callbacks-demo2.ko replace=1
[ 2316.161804] livepatch: enabling patch 'livepatch_callbacks_demo2'
[ 2316.161807] livepatch: 'livepatch_callbacks_demo2': initializing patching transition
[ 2316.161842] livepatch_callbacks_demo2: pre_patch_callback: vmlinux
[ 2316.161843] livepatch: 'livepatch_callbacks_demo2': starting patching transition
[ 2317.727141] livepatch: 'livepatch_callbacks_demo2': completing patching transition
[ 2317.727254] livepatch_callbacks_demo2: post_patch_callback: vmlinux
[ 2317.727255] livepatch: 'livepatch_callbacks_demo2': patching complete
% echo 0 > /sys/kernel/livepatch/livepatch_callbacks_demo2/enabled
[ 2328.995854] livepatch: 'livepatch_callbacks_demo2': initializing unpatching transition
[ 2328.995898] livepatch: 'livepatch_callbacks_demo2': starting unpatching transition
[ 2330.719234] livepatch: 'livepatch_callbacks_demo2': completing unpatching transition
[ 2330.719597] livepatch_callbacks_demo2: post_unpatch_callback: vmlinux
[ 2330.719599] livepatch: 'livepatch_callbacks_demo2': unpatching complete
% rmmod samples/livepatch/livepatch-callbacks-demo2.ko
% rmmod samples/livepatch/livepatch-callbacks-demo.ko
Running against v10, callbacks seem to be good up until I disable an
atomic replace patch. My understanding is that the original patch's
unpatch callbacks should be skipped (as they were). I was surprised to
see that atomic replacement patch only ran it's post-unpatch callback.
Unfortunately I'm running out of time to further debug today, but
thought I would share these results. I can dig in more tomorrow.
Regards,
-- Joe
next prev parent reply other threads:[~2018-03-07 21:55 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 8:20 Petr Mladek
2018-03-07 8:20 ` [PATCH v10 01/10] livepatch: Use lists to manage patches, objects and functions Petr Mladek
2018-03-13 22:38 ` Josh Poimboeuf
2018-03-07 8:20 ` [PATCH v10 02/10] livepatch: Free only structures with initialized kobject Petr Mladek
2018-03-13 22:38 ` Josh Poimboeuf
2018-03-14 15:50 ` Petr Mladek
2018-03-07 8:20 ` [PATCH v10 03/10] livepatch: Initial support for dynamic structures Petr Mladek
2018-03-13 22:44 ` Josh Poimboeuf
2018-03-19 13:10 ` Petr Mladek
2018-03-07 8:20 ` [PATCH v10 04/10] livepatch: Allow to unpatch only functions of the given type Petr Mladek
2018-03-07 8:20 ` [PATCH v10 05/10] livepatch: Support separate list for replaced patches Petr Mladek
2018-03-13 22:46 ` Josh Poimboeuf
2018-03-19 15:02 ` Petr Mladek
2018-03-19 21:43 ` Josh Poimboeuf
2018-03-20 12:25 ` Petr Mladek
2018-03-20 12:48 ` Evgenii Shatokhin
2018-03-20 13:30 ` Miroslav Benes
2018-03-20 20:15 ` Josh Poimboeuf
2018-03-23 9:45 ` Petr Mladek
2018-03-23 22:44 ` Josh Poimboeuf
2018-03-26 10:11 ` Petr Mladek
2018-04-06 19:50 ` Josh Poimboeuf
2018-04-10 8:34 ` Petr Mladek
2018-04-10 13:21 ` Miroslav Benes
2018-04-10 13:56 ` Evgenii Shatokhin
2018-04-10 17:47 ` Josh Poimboeuf
2018-04-11 7:56 ` Miroslav Benes
2018-04-10 17:42 ` Josh Poimboeuf
2018-04-11 8:07 ` Miroslav Benes
2018-04-11 12:32 ` Josh Poimboeuf
2018-04-11 13:39 ` Miroslav Benes
2018-04-11 14:17 ` Petr Mladek
2018-04-11 15:48 ` Josh Poimboeuf
2018-04-16 14:58 ` Petr Mladek
2018-04-16 19:04 ` Josh Poimboeuf
2018-04-17 8:23 ` Miroslav Benes
2018-04-17 15:37 ` Petr Mladek
2018-04-17 17:57 ` Josh Poimboeuf
2018-03-07 8:20 ` [PATCH v10 06/10] livepatch: Add atomic replace Petr Mladek
2018-03-13 22:48 ` Josh Poimboeuf
2018-03-20 14:35 ` Petr Mladek
2018-03-20 21:26 ` Josh Poimboeuf
2018-03-22 15:43 ` Petr Mladek
2018-03-07 8:20 ` [PATCH v10 07/10] livepatch: Correctly handle atomic replace for not yet loaded modules Petr Mladek
2018-03-13 14:55 ` Petr Mladek
2018-03-07 8:20 ` [PATCH v10 08/10] livepatch: Improve dynamic struct klp_object detection and manipulation Petr Mladek
2018-03-07 8:20 ` [PATCH v10 09/10] livepatch: Allow to replace even disabled patches Petr Mladek
2018-03-07 8:20 ` [PATCH v10 10/10] livepatch: Atomic replace and cumulative patches documentation Petr Mladek
2018-03-07 21:55 ` Joe Lawrence [this message]
2018-03-08 15:01 ` [PATCH v10 00/10] livepatch: Atomic replace feature Petr Mladek
2018-03-08 15:09 ` Joe Lawrence
2018-03-12 18:57 ` Joe Lawrence
2018-03-20 13:16 ` Miroslav Benes
2018-03-26 10:56 ` Petr Mladek
2018-03-26 18:12 ` Joe Lawrence
2018-03-27 8:22 ` Petr Mladek
2018-08-17 10:17 ` Evgenii Shatokhin
2018-08-17 14:53 ` Petr Mladek
2018-08-17 15:33 ` Evgenii Shatokhin
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=45877626-2d41-4af8-a8ff-5897585122ad@redhat.com \
--to=joe.lawrence@redhat.com \
--cc=eshatokhin@virtuozzo.com \
--cc=jbaron@akamai.com \
--cc=jeyu@kernel.org \
--cc=jikos@kernel.org \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=pmladek@suse.com \
/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
all inboxes | Powered by JetHome®