From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleg Nesterov Subject: Re: [PATCH 8/9] signal: Drop signals before sending them to init. Date: Thu, 13 Dec 2007 21:18:02 +0300 Message-ID: <20071213181802.GA486@tv-sign.ru> References: <20071213162502.GB219@tv-sign.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: "Eric W. Biederman" Cc: Linux Containers , Andrew Morton , Pavel Emelyanov List-Id: containers.vger.kernel.org On 12/13, Eric W. Biederman wrote: > > Oleg Nesterov writes: > > > So, do you mean we can ignore the problems with the signals which are > > currently blocked by /sbin/init? > > Yes. Further I am saying those signals will never become pending if > we do not have a signal handler installed. OK, if we change the semantics for /sbin/init signals we can avoid a lot of problems, > > I personally agree, but I'm not sure I understand this right. > > > >> +static int sig_init_drop(struct task_struct *tsk, int sig) > >> +{ > >> + /* All signals for which init has a SIG_DFL handler are > >> + * silently dropped without being sent. > >> + */ > >> + if (!is_sig_init(tsk)) > >> + return 0; > >> + > >> + return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL); > >> +} > > > > What if /sbin/init has a handler, but before this signal is delivered > > /sbin/init does signal(SIG_DFL) ? We should modify so_sigaction() to > > prevent this. Note again the patch above. > > No. We should treat signals that we process for /sbin/init completely > normally. ... including this one. I am not arguing. > This gives /sbin/init completely normal signal handling if the signal is > ever enqueued. Something trivial to implement and explain. Well, I am not sure about "explain" though. Unless I missed something this makes the semantics a bit special. Suppose that init does sigtimedwait() but the handler == SIG_DFL. Oleg.