From: Brian Gerst <bgerst@didntduck.org>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org, set@pobox.com,
alan@lxorguk.ukuu.org.uk, Wilfried.Weissmann@gmx.at
Subject: Re: [OOPS] repeatable 2.4.8-ac7, 2.4.7-ac6 just run xdos
Date: Wed, 22 Aug 2001 07:57:59 -0400 [thread overview]
Message-ID: <3B839E47.874F8F64@didntduck.org> (raw)
In-Reply-To: <20010819004703.A226@squish.home.loc.suse.lists.linux.kernel> <3B831CDF.4CC930A7@didntduck.org.suse.lists.linux.kernel> <oupn14sny4f.fsf@pigdrop.muc.suse.de>
Andi Kleen wrote:
>
> Brian Gerst <bgerst@didntduck.org> writes:
>
> > >
> > > CPU: 0
> > > EIP: 0010:[<c0180a18>]
> > > Using defaults from ksymoops -t elf32-i386 -a i386
> > > EFLAGS: 00010002
> > > eax: 00001000 ebx: c4562368 ecx: 00000000 edx: 00000001
> > > esi: c4562368 edi: c4a954d4 ebp: 00000001 esp: c6887d88
> > > ds: 008 es: 0000 ss: 0018
> > ^^^^
> > Here is your problem. %es is set to the null segment. I had my
> > suspicions about the segment reload optimisation in the -ac kernels, and
> > this proves it. Try backing out the changes to arch/i386/kernel/entry.S
> > and include/asm-i386/hw_irq.h and see if that fixes the problem.
>
> This patch should fix the problem. One assumption coded into the reload
> optimization is violated by vm86 mode. Please test.
Yes. What happened here is that %ds and %es were not being updated
atomically. Under normal operation, this would just leave %es with
USER_DS, which is sufficiently equivalent to KERNEL_DS to not cause a
fault. Coming out of vm86 mode however forces the data segment
registers to null after saving the real mode values on the stack. If an
interrupt happened between setting %ds and %es (what are the odds?) then
that assumption would fail and leave %es null, causing the next string
instruction to go boom. The same fix should be applied to entry.S as
well.
--
Brian Gerst
next prev parent reply other threads:[~2001-08-22 12:01 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20010819004703.A226@squish.home.loc.suse.lists.linux.kernel>
[not found] ` <3B831CDF.4CC930A7@didntduck.org.suse.lists.linux.kernel>
2001-08-22 11:16 ` [OOPS] repeatable 2.4.8-ac7, 2.4.7-ac6 just run xdos Andi Kleen
2001-08-22 11:57 ` Brian Gerst [this message]
2001-08-22 12:10 ` Andi Kleen
2001-08-22 12:11 ` Brian Gerst
2001-08-22 13:22 ` Andi Kleen
2001-08-22 19:52 ` Paul
2001-08-23 13:34 ` Andi Kleen
2001-08-23 18:05 ` Paul
2001-08-23 18:20 ` Wayne Whitney
2001-08-19 4:47 Paul
2001-08-19 5:09 ` Jeff Chua
2001-08-19 5:40 ` Paul
2001-08-19 8:04 ` Jeff Chua
2001-08-19 20:30 ` Eric W. Biederman
2001-08-19 5:10 ` Jeff Chua
2001-08-22 2:45 ` Brian Gerst
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=3B839E47.874F8F64@didntduck.org \
--to=bgerst@didntduck.org \
--cc=Wilfried.Weissmann@gmx.at \
--cc=ak@suse.de \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=set@pobox.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.