From: Miroslav Benes <mbenes@suse.cz>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Petr Mladek <pmladek@suse.com>, Jiri Kosina <jikos@kernel.org>,
Jason Baron <jbaron@akamai.com>,
Joe Lawrence <joe.lawrence@redhat.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 05/10] livepatch: Support separate list for replaced patches.
Date: Tue, 17 Apr 2018 10:23:12 +0200 (CEST) [thread overview]
Message-ID: <alpine.LSU.2.21.1804171018500.12184@pobox.suse.cz> (raw)
In-Reply-To: <20180416190425.tk7nnbqbmaxeniud@treble>
> > > > Second, unrelated patches must never patch the same functions.
> > > > Otherwise we would not be able to define which implementation
> > > > should be used. This is especially important when a patch is
> > > > removed and we need to fallback either to another patch or
> > > > original code. Yes, it makes perfect sense. But it needs code
> > > > that will check it, refuse loading the patch, ... It is not
> > > > complicated. But it is rather additional code than
> > > > simplification. I might make livepatching more safe
> > > > but probably not simplify the code.
> > >
> > > We don't need to enforce that. The func stack can stay. If somebody
> > > wants to patch the same function multiple times (without using
> > > 'replace'), that's inadvisable, but it's also their business. They're
> > > responsible for the tooling to ensure the patch stack order is sane.
> >
> >
> > While it might make sense to ignore the patch stack (ordering) for
> > the enable operation. Do we really want to ignore it when disabling
> > a patch.
> >
> > By other words, do we want to allow disabling a patch that is in
> > the middle of the stack, only partly in use? Does not this allow
> > some other crazy scenarios? Is it really the user business?
> > Will it make our life easier?
>
> If there's no longer a patch stack, then there's no concept of a middle.
> We would expect the patches to be independent of one another, and so
> disabling any of them independently would be harmless.
>
> If any of the patches share a func, and the user disables one in the
> "middle", it's not our job to support that. The vendor / patch author
> should prevent such cases from occurring with tooling, packaging,
> documentation, etc. Or they can just use 'replace'.
>
> We can already have similar unexpected situations today. For example,
> what if patch B is a cumulative superset of patch A, but the user
> mistakenly loads patch A (without replace) *after* loading patch B?
> Then some unforeseen craziness could ensue.
>
> We can't control all such scenarios (and that's ok), but we shouldn't
> pretend that we support them.
FWIW I agree with the above. Provided we keep the func stack.
[...]
> > The question is what to do with the stack of patches. It will have
> > no meaning for the enable operation because it will be done
> > automatically. But what about the disable/unregistrer operation?
>
> Assuming we got rid of the patch stack, would we even need to keep a
> global list of patches anymore?
There are places we walk through the list of patches (klp_add_nops() in
this patch set, klp_module_coming()), so probably yes.
Miroslav
next prev parent reply other threads:[~2018-04-17 8:24 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 [this message]
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
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=alpine.LSU.2.21.1804171018500.12184@pobox.suse.cz \
--to=mbenes@suse.cz \
--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=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®