summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2000-12-13 18:57:15 +0000
committerjhb <jhb@FreeBSD.org>2000-12-13 18:57:15 +0000
commitff7eb499fb75aa173dae947a5210d56a7da57da1 (patch)
tree0a6487741de36dbce82c428d03c120ba827971c2 /sys/i386
parent182989cd49ab5bfe72538c19ef156c7c87f26bf6 (diff)
downloadFreeBSD-src-ff7eb499fb75aa173dae947a5210d56a7da57da1.zip
FreeBSD-src-ff7eb499fb75aa173dae947a5210d56a7da57da1.tar.gz
If we fail to emulate a vm86 trap in kernel mode, then we use
vm86_trap() to return to the calling program directly. vm86_trap() doesn't return, thus it was never returning to trap() to release Giant. Thus, release Giant before calling vm86_trap().
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/trap.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index 5974535..db02d51 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -467,6 +467,7 @@ restart:
/*
* returns to original process
*/
+ mtx_exit(&Giant, MTX_DEF);
vm86_trap((struct vm86frame *)&frame);
goto out;
}
OpenPOWER on IntegriCloud