From: Andrea Arcangeli <andrea@suse.de>
To: David Mosberger <davidm@hpl.hp.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [patch] proposed fix for ptrace() SMP race
Date: Fri, 7 Sep 2001 15:28:58 +0200 [thread overview]
Message-ID: <20010907152858.O11329@athlon.random> (raw)
In-Reply-To: <200109062300.QAA27430@napali.hpl.hp.com> <20010907021900.L11329@athlon.random> <15256.6038.599811.557582@napali.hpl.hp.com> <20010907032801.N11329@athlon.random> <15256.22858.57091.769101@napali.hpl.hp.com>
In-Reply-To: <15256.22858.57091.769101@napali.hpl.hp.com>; from davidm@hpl.hp.com on Thu, Sep 06, 2001 at 10:21:14PM -0700
On Thu, Sep 06, 2001 at 10:21:14PM -0700, David Mosberger wrote:
> >>>>> On Fri, 7 Sep 2001 03:28:01 +0200, Andrea Arcangeli <andrea@suse.de> said:
>
> Andrea> For making sure the task isn't wakenup while it's under
> Andrea> ptrace we should just do that in
> Andrea> kernel/signal.c::ignored_signal() as far I can tell.
>
> This doesn't make sense: ignored_signal() is too late as
> handle_stop_signal() will already have woken up the task in response
> to a SIGCONT. Also, if you're suggesting to ignore SIGCONT while a
> PT_PTRACED is set, that certainly wouldn't be right. We only want to
correct, I suggest to ignore SIGCONT as well while PT_PTRACED is set.
> *delay* the wakeup while the ptrace() system call is running (which is
> much shorter than the period of time PT_PTRACED is set). So, as far
> as I can tell, you'd have to add more locking to the signal path,
Not more locking, just an additional check:
--- 2.4.10pre4aa1/kernel/signal.c.~1~ Sun Sep 2 20:04:01 2001
+++ 2.4.10pre4aa1/kernel/signal.c Fri Sep 7 15:22:23 2001
@@ -382,7 +382,7 @@
switch (sig) {
case SIGKILL: case SIGCONT:
/* Wake up the process if stopped. */
- if (t->state == TASK_STOPPED)
+ if (t->state == TASK_STOPPED && !(t->ptrace & PT_PTRACED))
wake_up_process(t);
t->exit_code = 0;
rm_sig_from_queue(SIGSTOP, t);
> So, I still think cpus_allowed is a safer and better approach at least
forget that. Also when you restore the cpus_allowed you won't
effectively wakup the task, it will just keep floating in the runqueue
but we won't try to reschedule the other idle cpus it so it's broken.
> Hmmh, looking at ptrace() more closely, the entire locking situation
> seems to be a bit confused. For example, what's stopping wait4() from
> releasing the task structure just after ptrace() released the
> tasklist_lock and before it checked child->state?
the get_task_struct()
Andrea
next prev parent reply other threads:[~2001-09-07 13:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-06 23:00 [patch] proposed fix for ptrace() SMP race David Mosberger
2001-09-07 0:19 ` Andrea Arcangeli
2001-09-07 0:40 ` David Mosberger
2001-09-07 1:28 ` Andrea Arcangeli
2001-09-07 1:41 ` Alan Cox
2001-09-07 13:34 ` Andrea Arcangeli
2001-09-07 5:21 ` David Mosberger
2001-09-07 13:28 ` Andrea Arcangeli [this message]
2001-09-07 15:35 ` David Mosberger
2001-09-08 17:11 ` Andrea Arcangeli
2001-09-10 17:20 ` David Mosberger
-- strict thread matches above, loose matches on Subject: below --
2001-09-10 17:54 Manfred Spraul
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=20010907152858.O11329@athlon.random \
--to=andrea@suse.de \
--cc=davidm@hpl.hp.com \
--cc=linux-kernel@vger.kernel.org \
/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