From: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
To: Davide Libenzi <davidel@xmailserver.org>
Cc: Linus Torvalds <torvalds@osdl.org>,
benh@kernel.crashing.org,
Kernel Mailing List <linux-kernel@vger.kernel.org>,
linuxppc-dev@lists.linuxppc.org,
linuxppc64-dev@lists.linuxppc.org
Subject: Re: [PATCH 2.5.73] Signal stack fixes #1 introduce PF_SS_ACTIVE
Date: Fri, 4 Jul 2003 22:24:44 +0200 [thread overview]
Message-ID: <20030704202444.GI22152@wohnheim.fh-wedel.de> (raw)
In-Reply-To: <Pine.LNX.4.55.0307041231350.5132@bigblue.dev.mcafeelabs.com>
On Fri, 4 July 2003 12:39:16 -0700, Davide Libenzi wrote:
>
> Yes, GNU Pth :
>
> http://www.gnu.org/software/pth/
>
> and, for example :
>
> http://www.xmailserver.org/libpcl.html
>
> They use the generic POSIX stack setup described here :
>
> http://www.gnu.org/software/pth/rse-pmt.ps
If I read that paper correctly, my patch should not break this
specific design. In fact, it explicitly states the possibility of an
equivalent of my patch: "the signal handler scope is often just a flag
in the process control block (PCB) ..."
As Linus pointed out, there might be other cases though.
> My Pine's 'd' key deleted his patch before I could take an exhaustive
> look, but it should be fine though. They both do use to enter the signal
> handler simply to get a snapshot of the context, and they exit the handler
> by letting the kernel to clean the on-sig-stack flag. try to search
> archives to take a better look at the patch ...
The patches are small, so read below for convenience.
Jörn
--
It's just what we asked for, but not what we want!
-- anonymous
--- linux-2.5.73/include/linux/sched.h~ss_generic 2003-07-04 18:57:01.000000000 +0200
+++ linux-2.5.73/include/linux/sched.h 2003-07-04 18:59:03.000000000 +0200
@@ -480,6 +480,7 @@
#define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */
#define PF_KSWAPD 0x00040000 /* I am kswapd */
#define PF_SWAPOFF 0x00080000 /* I am in swapoff */
+#define PF_SS_ACTIVE 0x00100000 /* Executing on signal stack now */
#define PF_LESS_THROTTLE 0x01000000 /* Throttle me less: I clena memory */
#ifdef CONFIG_SMP
--- linux-2.5.73/arch/i386/kernel/signal.c~ss_i386 2003-07-04 18:57:01.000000000 +0200
+++ linux-2.5.73/arch/i386/kernel/signal.c 2003-07-04 18:59:04.000000000 +0200
@@ -181,6 +181,9 @@
}
}
+ if (sas_ss_flags(regs->esp) == 0)
+ current->flags &= ~PF_SS_ACTIVE;
+
err |= __get_user(*peax, &sc->eax);
return err;
@@ -317,9 +320,22 @@
esp = regs->esp;
/* This is the X/Open sanctioned signal stack switching. */
- if (ka->sa.sa_flags & SA_ONSTACK) {
- if (sas_ss_flags(esp) == 0)
- esp = current->sas_ss_sp + current->sas_ss_size;
+ if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags(esp) == 0)) {
+ /* If we have switches to the signal stack before,
+ * something bad has happened to it, asking for a
+ * segmentation fault.
+ * If not, remember it for the next time
+ */
+ if (current->flags & PF_SS_ACTIVE) {
+ ka->sa.sa_handler = SIG_DFL;
+ force_sig(SIGSEGV, current);
+ /* XXX would it be simpler to return some broken
+ * value like NULL and have the calling function
+ * signal the segv?
+ */
+ }
+ current->flags |= PF_SS_ACTIVE;
+ esp = current->sas_ss_sp + current->sas_ss_size;
}
/* This is the legacy signal stack switching. */
prev parent reply other threads:[~2003-07-04 20:10 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-03 20:24 [PATCH 2.5.73] Fix broken signal optimization for i386 Jörn Engel
2003-07-04 17:43 ` Jörn Engel
2003-07-04 17:45 ` [PATCH 2.5.73] Signal stack fixes #1 introduce PF_SS_ACTIVE Jörn Engel
2003-07-04 17:51 ` [PATCH 2.5.73] Signal stack fixes #2 i386-specific Jörn Engel
2003-07-04 17:54 ` [PATCH 2.5.73] Signal stack fixes #1 introduce PF_SS_ACTIVE Jörn Engel
2003-07-04 17:58 ` [PATCH 2.5.73] Signal handling fix for ppc Jörn Engel
2003-07-04 23:26 ` Paul Mackerras
2003-07-05 7:33 ` Jörn Engel
2003-07-04 23:18 ` [PATCH 2.5.73] Signal stack fixes #1 introduce PF_SS_ACTIVE Paul Mackerras
2003-07-05 7:39 ` Jörn Engel
2003-07-06 8:47 ` Paul Mackerras
2003-07-06 10:17 ` Jörn Engel
2003-07-07 11:29 ` Paul Mackerras
2003-07-07 11:58 ` Jörn Engel
2003-07-07 11:33 ` Paul Mackerras
2003-07-07 11:46 ` Jörn Engel
2003-07-04 19:21 ` Linus Torvalds
2003-07-04 19:38 ` Jörn Engel
2003-07-04 20:06 ` Linus Torvalds
2003-07-04 20:18 ` Jörn Engel
2003-07-05 0:39 ` Linus Torvalds
2003-07-05 7:30 ` Jörn Engel
2003-07-05 10:44 ` Jörn Engel
2003-07-05 17:16 ` Linus Torvalds
2003-07-06 12:51 ` Jörn Engel
2003-07-07 9:30 ` [PATCH 2.5.74] Signal stack safety #2 i386 specific Jörn Engel
2003-07-05 17:06 ` [PATCH 2.5.73] Signal stack fixes #1 introduce PF_SS_ACTIVE Jamie Lokier
2003-07-06 1:27 ` Eric W. Biederman
2003-07-04 19:39 ` Davide Libenzi
2003-07-04 20:24 ` Jörn Engel [this message]
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=20030704202444.GI22152@wohnheim.fh-wedel.de \
--to=joern@wohnheim.fh-wedel.de \
--cc=benh@kernel.crashing.org \
--cc=davidel@xmailserver.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.linuxppc.org \
--cc=linuxppc64-dev@lists.linuxppc.org \
--cc=torvalds@osdl.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
all inboxes | Powered by JetHome®