public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Jiri Kosina <jkosina@suse.cz>
Cc: Vojtech Pavlik <vojtech@suse.com>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@redhat.com>,
	Seth Jennings <sjenning@redhat.com>,
	linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: live patching design (was: Re: [PATCH 1/3] sched: add sched_task_call())
Date: Sat, 21 Feb 2015 20:48:40 +0100	[thread overview]
Message-ID: <20150221194840.GA10126@gmail.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1502212025450.2357@pobox.suse.cz>


* Jiri Kosina <jkosina@suse.cz> wrote:

> On Sat, 21 Feb 2015, Ingo Molnar wrote:
> 
> > > But admittedly, if we reserve a special sort-of 
> > > signal for making the tasks pass through a safe 
> > > checkpoint (and make them queue there (your solution) 
> > > or make them just pass through it and continue 
> > > (current kGraft)), it might reduce the time this 
> > > effort needs considerably.
> > 
> > Well, I think the 'simple' method has another 
> > advantage: it can only work if all those problems 
> > (kthreads, parking machinery) are solved, because the 
> > patching will occur only everything is quiescent.
> > 
> > So no shortcuts are allowed, by design. It starts from 
> > a fundamentally safe, robust base, while all the other 
> > approaches I've seen were developed in a 'lets get the 
> > patching to work, then iteratively try to make it 
> > safer' which really puts the cart before the horse.
> > 
> > So to put it more bluntly: I don't subscribe to the 
> > whole 'consistency model' nonsense: that's just crazy 
> > talk IMHO.
> > 
> > Make it fundamentally safe from the very beginning, the 
> > 'simple method' I suggested _won't live patch the 
> > kernel_ if the mechanism has a bug and some kthread or 
> > task does not park. See the difference?
> 
> I see the difference, but I am afraid you are simplifying 
> the situation a litle bit too much.
> 
> There will always be properties of patches that will make 
> them unapplicable in a "live patching" way by design. 
> Think of data structure layout changes (*).

Yes.

> Or think of kernel that has some 3rd party vendor module 
> loaded, and this module spawning a ktrehad that is not 
> capable of parking itself.

The kernel will refuse to live patch until the module is 
fixed. It is a win by any measure.

> Or think of patching __notrace__ functions.

Why would __notrace__ functions be a problem in the 
'simple' method? Live patching with this method will work 
even if ftrace is not built in, we can just patch out the 
function in the simplest possible fashion, because we do it 
atomically and don't have to worry about per task 
'transition state' - like kGraft does.

It's a massive simplification and there's no need to rely 
on ftrace's mcount trick. (Sorry Steve!)

> Etc.
> 
> So it's not black and white, it's really a rather 
> philosophical question where to draw the line (and make 
> sure that everyone is aware of where the line is and what 
> it means).

Out of the three examples you mentioned, two are actually 
an advantage to begin with - so I'd suggest you stop 
condescending me ...

> This is exactly why we came up with consistency models -- 
> it allows you to draw the line at well-defined places.

To still be blunt: they are snake oil, a bit like 'security 
modules': allowing upstream merges by consensus between 
competing pieces of crap, instead of coming up with a 
single good design that we can call the Linux kernel live 
patching method ...

Thanks,

	Ingo

  reply	other threads:[~2015-02-21 19:48 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-16 18:52 [PATCH 0/3] prevent /proc/<pid>/stack garbage for running tasks Josh Poimboeuf
2015-02-16 18:52 ` [PATCH 1/3] sched: add sched_task_call() Josh Poimboeuf
2015-02-16 20:44   ` Peter Zijlstra
2015-02-16 22:05     ` Josh Poimboeuf
2015-02-17  9:24       ` Peter Zijlstra
2015-02-17 14:12         ` Josh Poimboeuf
2015-02-17 18:15           ` Peter Zijlstra
2015-02-17 21:25             ` Josh Poimboeuf
2015-02-18 15:21               ` Peter Zijlstra
2015-02-18 17:12                 ` Josh Poimboeuf
2015-02-19  0:20                   ` Peter Zijlstra
2015-02-19  4:17                     ` Josh Poimboeuf
2015-02-19 10:16                       ` Peter Zijlstra
2015-02-19 16:24                         ` Josh Poimboeuf
2015-02-19 16:33                           ` Vojtech Pavlik
2015-02-19 17:03                             ` Josh Poimboeuf
2015-02-19 17:08                               ` Jiri Kosina
2015-02-19 17:19                               ` Vojtech Pavlik
2015-02-19 17:32                                 ` Josh Poimboeuf
2015-02-19 17:48                                   ` Vojtech Pavlik
2015-02-19 20:40                                   ` Vojtech Pavlik
2015-02-19 21:42                                     ` Josh Poimboeuf
2015-02-20  7:46                                       ` Jiri Kosina
2015-02-20  8:49                                         ` Jiri Kosina
2015-02-20  9:50                                           ` Ingo Molnar
2015-02-20 10:02                                             ` Jiri Kosina
2015-02-20 10:44                                               ` live patching design (was: Re: [PATCH 1/3] sched: add sched_task_call()) Ingo Molnar
2015-02-20 10:58                                                 ` Jiri Kosina
2015-02-20 19:49                                                   ` Ingo Molnar
2015-02-20 21:46                                                     ` Vojtech Pavlik
2015-02-20 22:08                                                       ` Josh Poimboeuf
2015-02-21 18:30                                                         ` Ingo Molnar
2015-02-22  8:52                                                           ` Jiri Kosina
2015-02-22 10:17                                                             ` Ingo Molnar
2015-02-22 19:18                                                               ` Jiri Kosina
2015-02-23 12:43                                                           ` Jiri Kosina
2015-02-24 10:37                                                             ` Ingo Molnar
2015-02-21 18:18                                                       ` Ingo Molnar
2015-02-21 18:57                                                         ` Jiri Kosina
2015-02-21 19:16                                                           ` Ingo Molnar
2015-02-21 19:31                                                             ` Jiri Kosina
2015-02-21 19:48                                                               ` Ingo Molnar [this message]
2015-02-21 20:10                                                                 ` Jiri Kosina
2015-02-21 20:53                                                                   ` Jiri Kosina
2015-02-22  8:46                                                                   ` Ingo Molnar
2015-02-22  9:08                                                                     ` Jiri Kosina
2015-02-22  9:46                                                                     ` live kernel upgrades (was: live kernel patching design) Ingo Molnar
2015-02-22 10:34                                                                       ` Ingo Molnar
2015-02-22 10:48                                                                       ` Ingo Molnar
2015-02-22 19:13                                                                         ` Jiri Kosina
2015-02-22 23:01                                                                           ` Andrew Morton
2015-02-23  0:18                                                                             ` Dave Airlie
2015-02-23  0:44                                                                               ` Arjan van de Ven
2015-02-23  8:17                                                                                 ` Jiri Kosina
2015-02-23 10:42                                                                                   ` Richard Weinberger
2015-02-23 11:08                                                                                     ` Vojtech Pavlik
2015-02-23 11:50                                                                                 ` Pavel Machek
2015-02-24  9:16                                                                                 ` Ingo Molnar
2015-02-24 12:28                                                                                   ` Jiri Slaby
2015-03-05  0:51                                                                                     ` Ingo Molnar
2015-02-23  6:35                                                                             ` Vojtech Pavlik
2015-02-24  9:44                                                                               ` Ingo Molnar
2015-02-24 12:12                                                                                 ` Vojtech Pavlik
2015-02-24 10:53                                                                           ` Ingo Molnar
2015-02-24 12:19                                                                             ` Vojtech Pavlik
2015-02-22 14:37                                                                       ` Josh Poimboeuf
2015-02-22 16:40                                                                         ` Josh Poimboeuf
2015-02-22 19:03                                                                           ` Jiri Kosina
2015-02-24 10:23                                                                         ` Ingo Molnar
2015-02-24 11:10                                                                           ` Petr Mladek
2015-02-24 12:36                                                                           ` Vojtech Pavlik
2015-02-23 11:39                                                                       ` Pavel Machek
2015-02-24 10:25                                                                         ` Ingo Molnar
2015-02-24 12:11                                                                       ` Jiri Slaby
2015-02-24 13:18                                                                         ` live kernel upgrades Pavel Emelyanov
2015-02-20 16:12                                             ` [PATCH 1/3] sched: add sched_task_call() Josh Poimboeuf
2015-02-20 20:08                                               ` Ingo Molnar
2015-02-20 21:22                                                 ` Josh Poimboeuf
2015-02-20 17:05                                           ` Josh Poimboeuf
2015-02-19 21:26                                   ` Jiri Kosina
2015-02-19 21:38                                     ` Jiri Kosina
2015-02-19 23:11                                     ` Josh Poimboeuf
2015-02-16 18:52 ` [PATCH 2/3] stacktrace: add save_stack_trace_tsk_safe() Josh Poimboeuf
2015-02-18  0:13   ` Andrew Morton
2015-02-20  9:32     ` Jiri Kosina
2015-02-16 18:52 ` [PATCH 3/3] proc: fix /proc/<pid>/stack for running tasks Josh Poimboeuf

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=20150221194840.GA10126@gmail.com \
    --to=mingo@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=jkosina@suse.cz \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=sjenning@redhat.com \
    --cc=torvalds@linux-foundation.org \
    --cc=vojtech@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