Messages in this thread Patch in this message |  | | Date | Sat, 25 Jan 1997 15:08:10 +0100 (MET) | From | Ingo Molnar <> | Subject | Re: This can freeze linux 2.0 on 486 [patch included] |
| |
On Sat, 25 Jan 1997, Praveen Dwivedi wrote:
> I have a 486/DX4 100Mhz. I don't know the stepping id.
> This happened when you do a ls immediately after previous steps > The shell is killed. > > > Jan 26 06:58:04 quark kernel: Oops: 0002 > Jan 26 06:58:04 quark kernel: CPU: 0 > Jan 26 06:58:04 quark kernel: EIP: 0010:[<00120281>]
could you please try this patch?
It goes cleanly both into 2.0.28 and 2.1.22. You simply have to do a 'make zImage' (or whatever you use) after applying the patch. Only one C module gets recompiled.
[ snip out the patch from this mail and do a 'cd /usr/src;patch -p0 < thispatch'. Assuming that you have your kernel sources in /usr/src/linux ]
-- mingo
--- linux/arch/i386/kernel/traps.c.original Sat Jan 25 15:03:14 1997 +++ linux/arch/i386/kernel/traps.c Sat Jan 25 15:03:42 1997 @@ -190,6 +190,19 @@ DO_ERROR(12, SIGBUS, "stack segment", stack_segment, current) DO_ERROR(17, SIGSEGV, "alignment check", alignment_check, current) DO_ERROR(18, SIGSEGV, "reserved", reserved, current) +DO_ERROR(19, SIGSEGV, "cache flush denied", cache_flush_denied, current) + +asmlinkage void cache_flush_denied(struct pt_regs * regs, long error_code) +{ + if (regs->eflags & VM_MASK) { + handle_vm86_fault((struct kernel_vm86_regs *) regs, error_code); + return; + } + die_if_kernel("cache flush denied",regs,error_code); + current->tss.error_code = error_code; + current->tss.trap_no = 19; + force_sig(SIGSEGV, current); +} asmlinkage void do_general_protection(struct pt_regs * regs, long error_code) {
|  |