public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC][PATCH 0/5] Container init signal semantics
@ 2008-11-26  3:42 Sukadev Bhattiprolu
  2008-11-26  3:44 ` [RFC][PATCH 1/5] pid: Implement ns_of_pid Sukadev Bhattiprolu
                   ` (4 more replies)
  0 siblings, 5 replies; 33+ messages in thread
From: Sukadev Bhattiprolu @ 2008-11-26  3:42 UTC (permalink / raw)
  To: oleg, ebiederm, roland; +Cc: daniel, xemul, containers, linux-kernel, sukadev


Container-init must behave like global-init to processes within the
container and hence it must be immune to unhandled fatal signals from
within the container (i.e SIG_DFL signals that terminate the process).

But the same container-init must behave like a normal process to 
processes in ancestor namespaces and so if it receives the same fatal
signal from a process in ancestor namespace, the signal must be
processed.

Further, since processes don't have a valid pid numbers in a descendant
pid namespaces, the siginfo->si_pid field must be set to 0.

Implementing these semantics requires that send_signal() determine pid
namespace of the sender but since signals can originate from workqueues/
interrupt-handlers, determining pid namespace of sender may not always
be possible or safe.

This patchset implements the design/simplified semantics suggested by
Oleg Nesterov.  These semantics are:

	- container-init must never be terminated by a signal from a
	  descendant process.

	- container-init must never be immune to SIGKILL from an ancestor
	  namespace (so a process in parent namespace must always be able
	  to terminate a descendant container).

	- container-init may be immune to unhandled fatal signals (like
	  SIGUSR1) even if they are from ancestor namespace (SIGKILL is
	  the only reliable signal from ancestor namespace).

Patches in this set:

	[PATCH 1/5] pid: Implement ns_of_pid
	[PATCH 2/5] pid: Generalize task_active_pid_ns
	[PATCH 3/5] Determine if sender is from ancestor ns
	[PATCH 4/5] Protect cinit from fatal signals
	[PATCH 5/5] Clear si_pid for signal from ancestor ns

TODO:
	- SIGSTOP and ptrace functionality to be reviewed/fixed.

	- siginfo->si_pid may need to be cleared in a few more places
	  (eg; __do_notify(), F_SETSIG ?).

Limitations/side-effects of current design

	- Container-init is immune to suicide - kill(getpid(), SIGKILL) is
	  ignored. Use exit() :-)

	- rt_sigqueueinfo(): siginfo->si_pid value is unreliable/undefined
	  when rt_sigqueueinfo() is used to signal a process in a descendant
	  namespace

Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2008-12-09  3:22 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-26  3:42 [RFC][PATCH 0/5] Container init signal semantics Sukadev Bhattiprolu
2008-11-26  3:44 ` [RFC][PATCH 1/5] pid: Implement ns_of_pid Sukadev Bhattiprolu
2008-11-27  1:19   ` Bastian Blank
2008-12-01 20:24     ` Sukadev Bhattiprolu
2008-12-02 11:58       ` Bastian Blank
2008-12-02 22:12         ` Sukadev Bhattiprolu
2008-12-03  0:34         ` Valdis.Kletnieks
2008-11-26  3:45 ` [RFC][PATCH 2/5] pid: Generalize task_active_pid_ns Sukadev Bhattiprolu
2008-11-27  1:17   ` Bastian Blank
2008-11-27 21:19     ` Greg Kurz
2008-12-01 21:15       ` Sukadev Bhattiprolu
2008-12-02 11:57         ` Bastian Blank
2008-12-03  7:41           ` Sukadev Bhattiprolu
2008-12-04 12:58             ` Bastian Blank
2008-11-27 13:09   ` Nadia Derbey
2008-12-01 20:38     ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns Sukadev Bhattiprolu
2008-11-27  1:01   ` Bastian Blank
2008-12-01 20:15     ` Sukadev Bhattiprolu
2008-12-02 11:48       ` Bastian Blank
2008-12-02 19:59         ` Sukadev Bhattiprolu
2008-12-04 12:45           ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns+ Bastian Blank
2008-12-02  3:07   ` [RFC][PATCH 3/5] Determine if sender is from ancestor ns Roland McGrath
2008-12-04  1:06   ` Roland McGrath
2008-12-09  3:22     ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 4/5] Protect cinit from fatal signals Sukadev Bhattiprolu
2008-11-27  1:07   ` Bastian Blank
2008-12-01 20:21     ` Sukadev Bhattiprolu
2008-12-02 12:06       ` Bastian Blank
2008-12-02 20:51         ` Sukadev Bhattiprolu
2008-12-04 12:52           ` Bastian Blank
2008-12-04 18:58             ` Sukadev Bhattiprolu
2008-11-26  3:46 ` [RFC][PATCH 5/5] Clear si_pid for signal from ancestor ns Sukadev Bhattiprolu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox