All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anton Vorontsov <anton.vorontsov@linaro.org>
To: Oleg Nesterov <oleg@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: rientjes@google.com, linux-kernel@vger.kernel.org
Subject: [PATCH] sysrq: Use SEND_SIG_FORCED instead of force_sig()
Date: Wed, 15 Feb 2012 02:50:17 +0400	[thread overview]
Message-ID: <20120214225017.GA12360@oksana.dev.rtsoft.ru> (raw)
In-Reply-To: <20120210201008.GA21009@redhat.com>

Change send_sig_all() to use do_send_sig_info(SEND_SIG_FORCED)
instead of force_sig(SIGKILL). With the recent changes we do not
need force_ to kill the CLONE_NEWPID tasks.

And this is more correct. force_sig() can race with the exiting
thread, while do_send_sig_info(group => true) kill the whole
process.

Suggested-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
---

On Fri, Feb 10, 2012 at 09:10:08PM +0100, Oleg Nesterov wrote:
> > --- a/drivers/tty/sysrq.c
> > +++ b/drivers/tty/sysrq.c
> > @@ -324,9 +324,12 @@ static void send_sig_all(int sig)
> >  
> >  	read_lock(&tasklist_lock);
> >  	for_each_process(p) {
> > -		if (p->mm && !is_global_init(p))
> > -			/* Not swapper, init nor kernel thread */
> > -			force_sig(sig, p);
> > +		if (p->flags & PF_KTHREAD)
> > +			continue;
> > +		if (is_global_init(p))
> > +			continue;
> > +
> > +		force_sig(sig, p);
> >  	}
> >  	read_unlock(&tasklist_lock);
> 
> Obviously I agree with this change.
> 
> But where does this read_lock(tasklist) come from?

It came from this patch: http://lkml.org/lkml/2012/2/7/24

> We discussed this with Anton. Yes, tasklist ensures that
> force_sig() can't crash the kernel. But it is still wrong
> and should not be used.
>
> I think send_sig_all() should use SEND_SIG_FORCED (this
> depends on the patches I sent to Andrew), in this case
> tasklist is not needed.

Well, I think the lock is still a good thing: we don't want
any new processes to be created while we kill others.

I might be wrong, but copy_process() issues recalc_sigpending()
under tasklist lock especially the for this scenario.

So, in this and in OOM cases we have to be precise (unlike LMK).
Sysrq is a rare thing, so there is actually should be no problem
with holding the lock.

So, how about this patch?

Greg, can we take it via -mm tree, as it depends on a few
sched patches?

 drivers/tty/sysrq.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 8db9125..5ab8039 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -329,7 +329,7 @@ static void send_sig_all(int sig)
 		if (is_global_init(p))
 			continue;
 
-		force_sig(sig, p);
+		do_send_sig_info(sig, SEND_SIG_FORCED, p, true);
 	}
 	read_unlock(&tasklist_lock);
 }
-- 
1.7.7.6


       reply	other threads:[~2012-02-14 22:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <13288070803232@kroah.org>
     [not found] ` <20120210201008.GA21009@redhat.com>
2012-02-14 22:50   ` Anton Vorontsov [this message]
2012-02-14 23:03     ` [PATCH] sysrq: Use SEND_SIG_FORCED instead of force_sig() Greg Kroah-Hartman
2012-02-15 13:53     ` Oleg Nesterov
2012-03-24 11:00 Anton Vorontsov
2012-03-26 22:43 ` Andrew Morton
2012-03-27 13:03   ` Anton Vorontsov
2012-03-28 20:52   ` Oleg Nesterov
2012-03-28 21:08     ` Andrew Morton
2012-03-28 21:26       ` Oleg Nesterov

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=20120214225017.GA12360@oksana.dev.rtsoft.ru \
    --to=anton.vorontsov@linaro.org \
    --cc=akpm@linux-foundation.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleg@redhat.com \
    --cc=rientjes@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.