lkml.org 
[lkml]   [1997]   [Jan]   [31]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateFri, 31 Jan 1997 02:43:37 -0500
From"David S. Miller" <>
SubjectRe: 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 ----------------- */
\
 
 \ /
  Last update: 2005-03-22 12:38    [W:0.261 / U:0.340 seconds]
©2003-2008 Jasper Spaans