From: Petr Mladek <pmladek@suse.com>
To: Joe Lawrence <joe.lawrence@redhat.com>
Cc: Jiri Kosina <jikos@kernel.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Miroslav Benes <mbenes@suse.cz>, 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: Thu, 8 Mar 2018 16:01:50 +0100 [thread overview]
Message-ID: <20180308150150.guwwj2exrymugoeq@pathway.suse.cz> (raw)
In-Reply-To: <45877626-2d41-4af8-a8ff-5897585122ad@redhat.com>
On Wed 2018-03-07 16:55:53, Joe Lawrence wrote:
> 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.
Great catch!
I guess that it is caused by the heuristic used in
klp_unpatch_object() to decide whether the object is patched
or not.
We need to change the state only when manipulating the
statically defined functions.
Thanks a lot for so extensive testing!!!
Best Regards,
Petr
next prev parent reply other threads:[~2018-03-08 15:01 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 8:20 [PATCH v10 00/10] livepatch: Atomic replace feature 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 ` [PATCH v10 00/10] livepatch: Atomic replace feature Joe Lawrence
2018-03-08 15:01 ` Petr Mladek [this message]
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=20180308150150.guwwj2exrymugoeq@pathway.suse.cz \
--to=pmladek@suse.com \
--cc=eshatokhin@virtuozzo.com \
--cc=jbaron@akamai.com \
--cc=jeyu@kernel.org \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
/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;
as well as URLs for NNTP newsgroup(s).