diff options
author | jhb <jhb@FreeBSD.org> | 2000-12-13 18:57:15 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2000-12-13 18:57:15 +0000 |
commit | ff7eb499fb75aa173dae947a5210d56a7da57da1 (patch) | |
tree | 0a6487741de36dbce82c428d03c120ba827971c2 /sys/amd64 | |
parent | 182989cd49ab5bfe72538c19ef156c7c87f26bf6 (diff) | |
download | FreeBSD-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/amd64')
-rw-r--r-- | sys/amd64/amd64/trap.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 5974535..db02d51 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -467,6 +467,7 @@ restart: /* * returns to original process */ + mtx_exit(&Giant, MTX_DEF); vm86_trap((struct vm86frame *)&frame); goto out; } |