Re: [OOPS] repeatable 2.4.8-ac7, 2.4.7-ac6 just run xdos

Andi Kleen
2001-08-23T13:34:31Z

On Wed, Aug 22, 2001 at 03:52:26PM -0400, Paul wrote:
> Andi Kleen <ak@suse.de>, on Wed Aug 22, 2001 [03:22:03 PM] said:
> >
> > Here is a new patch with both checks.
> >
>
> Dear Andi;
>
> Well, with this patch, the kernel doesnt oops, but vm86
> seems to be busted now. save_v86_state() pops out:
> 'vm86: could not access userspace vm86_info'
> and gives dosemu a segv.

I found the problem in the previous patch. Here is an updated one.
Please test again. Again against -ac7 (or later if Alan hasn't applied
the earlier patch)

-Andi

--- include/asm-i386/hw_irq.h-SEG2 Mon Aug 20 02:54:53 2001
+++ include/asm-i386/hw_irq.h Wed Aug 22 13:02:16 2001
@@ -114,8 +114,10 @@
"cmpl %eax,7*4(%esp)\n\t" \
"je 1f\n\t" \
"movl %eax,%ds\n\t" \
+ "1: cmpl %eax,8*4(%esp)\n\t" \
+ "je 2f\n\t" \
"movl %eax,%es\n\t" \
- "1:\n\t"
+ "2:\n\t"

#define IRQ_NAME2(nr) nr##_interrupt(void)
#define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
--- arch/i386/kernel/entry.S-SEG2 Sat Aug 18 08:41:53 2001
+++ arch/i386/kernel/entry.S Thu Aug 23 15:20:21 2001
@@ -291,9 +291,11 @@
movl $(__KERNEL_DS),%edx
cmpl %edx,%ecx
jz 1f
- movl %edx,%ds
movl %edx,%es
-1: GET_CURRENT(%ebx)
+1: cmpl %edx,9*4(%esp) # check ds on the stack
+ jz 2f
+ movl %edx,%ds
+2: GET_CURRENT(%ebx)
call *%edi
addl $8,%esp
jmp ret_from_exception