From: Stas Sergeev <stsp@aknet.ru>
To: Andrew Morton <akpm@osdl.org>
Cc: torvalds@osdl.org, mingo@elte.hu, linux-kernel@vger.kernel.org,
VANDROVE@vc.cvut.cz
Subject: Re: crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC
Date: Mon, 11 Apr 2005 21:15:00 +0400 [thread overview]
Message-ID: <425AB094.6060807@aknet.ru> (raw)
In-Reply-To: <20050410153228.1452365a.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 424 bytes --]
Hello.
Andrew Morton wrote:
> This is utterly obscure - it needs a comment so that readers know what that
> "- 8" is doing there.
Yes, that was only an RFC thing.
And now since there were not too much
of an FC, I prepared the "polished"
version. But apparently you already
released -mm3:)
Well, at least you can still apply the
comments if you feel like that. Here
they are.
Signed-off-by: Stas Sergeev <stsp@aknet.ru>
[-- Attachment #2: esp0fix.diff --]
[-- Type: text/x-patch, Size: 1307 bytes --]
--- linux-2.6.12-rc2/arch/i386/kernel/entry.S 2005-04-06 09:34:35.000000000 +0400
+++ linux/arch/i386/kernel/entry.S 2005-04-11 10:49:28.000000000 +0400
@@ -245,6 +245,9 @@
restore_all:
movl EFLAGS(%esp), %eax # mix EFLAGS, SS and CS
+ # Warning: OLDSS(%esp) contains the wrong/random values if we
+ # are returning to the kernel.
+ # See comments in process.c:copy_thread() for details.
movb OLDSS(%esp), %ah
movb CS(%esp), %al
andl $(VM_MASK | (4 << 8) | 3), %eax
--- linux-2.6.12-rc2/arch/i386/kernel/process.c 2005-04-06 09:34:35.000000000 +0400
+++ linux/arch/i386/kernel/process.c 2005-04-11 10:30:39.000000000 +0400
@@ -394,6 +394,16 @@
childregs->esp = esp;
p->thread.esp = (unsigned long) childregs;
+ /*
+ * The below -8 is to reserve 8 bytes on top of the ring0 stack.
+ * This is necessary to guarantee that the entire "struct pt_regs"
+ * is accessable even if the CPU haven't stored the SS/ESP registers
+ * on the stack (interrupt gate does not save these registers
+ * when switching to the same priv ring).
+ * Therefore beware: accessing the xss/esp fields of the
+ * "struct pt_regs" is possible, but they may contain the
+ * completely wrong values.
+ */
p->thread.esp0 = (unsigned long) (childregs+1) - 8;
p->thread.eip = (unsigned long) ret_from_fork;
prev parent reply other threads:[~2005-04-11 17:15 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-05 6:55 crash in entry.S restore_all, 2.6.12-rc2, x86, PAGEALLOC Ingo Molnar
2005-04-05 7:03 ` Andrew Morton
2005-04-05 7:07 ` Ingo Molnar
2005-04-05 7:16 ` Ingo Molnar
2005-04-05 7:29 ` Ingo Molnar
2005-04-05 7:40 ` Ingo Molnar
2005-04-05 9:51 ` Mikael Pettersson
2005-04-05 18:09 ` Ingo Molnar
2005-04-05 7:05 ` Ingo Molnar
2005-04-05 19:11 ` Stas Sergeev
2005-04-05 19:19 ` Linus Torvalds
2005-04-05 19:41 ` Stas Sergeev
2005-04-05 19:53 ` Linus Torvalds
2005-04-05 20:44 ` Ingo Molnar
2005-04-05 21:04 ` Linus Torvalds
2005-04-06 15:44 ` Stas Sergeev
2005-04-07 8:00 ` Ingo Molnar
2005-04-07 11:10 ` Andrew Morton
2005-04-07 14:47 ` Linus Torvalds
2005-04-07 14:51 ` Ingo Molnar
2005-04-07 16:47 ` Dave Jones
2005-04-07 17:17 ` Richard B. Johnson
2005-04-07 17:23 ` Linus Torvalds
2005-04-07 16:11 ` Stas Sergeev
2005-04-07 16:35 ` Linus Torvalds
2005-04-07 16:46 ` Stas Sergeev
2005-04-07 16:55 ` Linus Torvalds
2005-04-07 18:10 ` Stas Sergeev
2005-04-10 13:20 ` Stas Sergeev
2005-04-10 22:32 ` Andrew Morton
2005-04-11 17:15 ` Stas Sergeev [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=425AB094.6060807@aknet.ru \
--to=stsp@aknet.ru \
--cc=VANDROVE@vc.cvut.cz \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--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