Messages in this thread Patch in this message |  | | Date | Fri, 31 Jan 1997 02:43:37 -0500 | From | "David S. Miller" <> | Subject | Re: 2.1.24 / DOSEMU / DOS 7 |
| |
Date: Thu, 30 Jan 1997 23:12:56 +0100 (MET) From: Hans Lermen <lermen@elserv.ffm.fgan.de>
I guess you forgot the 'other half' of the patch ;-)
Thanks Hans, Alan you should add this to your 2.1.24 patch set.
--- linux/arch/i386/kernel/vm86.c.~1~ Sun Jan 26 05:07:05 1997 +++ linux/arch/i386/kernel/vm86.c Fri Jan 31 00:08:03 1997 @@ -427,34 +427,26 @@ return_to_32bit(regs, VM86_INTx + (i << 8)); } - - +/* This must be called with the kernel lock held. */ int handle_vm86_trap(struct kernel_vm86_regs * regs, long error_code, int trapno) { - int ret; - - lock_kernel(); if (VMPI.is_vm86pus) { if ( (trapno==3) || (trapno==1) ) return_to_32bit(regs, VM86_TRAP + (trapno << 8)); do_int(regs, trapno, (unsigned char *) (regs->ss << 4), SP(regs)); - ret = 1; - goto out; + return 1; } - ret = 0; if (trapno !=1) - goto out; /* we let this handle by the calling routine */ + return 0; /* we let this handle by the calling routine */ if (current->flags & PF_PTRACED) current->blocked &= ~(1 << (SIGTRAP-1)); send_sig(SIGTRAP, current, 1); current->tss.trap_no = trapno; current->tss.error_code = error_code; -out: - unlock_kernel(); - return ret; + return 0; } - +/* This must be called with the kernel lock held. */ void handle_vm86_fault(struct kernel_vm86_regs * regs, long error_code) { unsigned char *csp, *ssp; @@ -466,9 +458,8 @@ #define VM86_FAULT_RETURN \ if (VMPI.force_return_for_pic && (VEFLAGS & IF_MASK)) \ return_to_32bit(regs, VM86_PICRETURN); \ - goto out; + return; - lock_kernel(); csp = (unsigned char *) (regs->cs << 4); ssp = (unsigned char *) (regs->ss << 4); sp = SP(regs); @@ -532,7 +523,7 @@ return_to_32bit(regs, VM86_INTx + (intno << 8)); } do_int(regs, intno, ssp, sp); - goto out; + return; } /* iret */ @@ -565,8 +556,6 @@ default: return_to_32bit(regs, VM86_UNKNOWN); } -out: - unlock_kernel(); } /* ---------------- vm86 special IRQ passing stuff ----------------- */
|  |