summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/trap.c6
-rw-r--r--sys/i386/i386/trap.c6
-rw-r--r--sys/kern/subr_trap.c6
3 files changed, 12 insertions, 6 deletions
diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c
index f32dfaeeddc0..d49327fa9816 100644
--- a/sys/amd64/amd64/trap.c
+++ b/sys/amd64/amd64/trap.c
@@ -279,7 +279,8 @@ trap(frame)
enable_intr();
}
- mtx_enter(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_enter(&Giant, MTX_DEF);
#if defined(I586_CPU) && !defined(NO_F00F_HACK)
restart:
@@ -639,7 +640,8 @@ restart:
user:
userret(p, &frame, sticks, 1);
out:
- mtx_exit(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_exit(&Giant, MTX_DEF);
}
#ifdef notyet
diff --git a/sys/i386/i386/trap.c b/sys/i386/i386/trap.c
index f32dfaeeddc0..d49327fa9816 100644
--- a/sys/i386/i386/trap.c
+++ b/sys/i386/i386/trap.c
@@ -279,7 +279,8 @@ trap(frame)
enable_intr();
}
- mtx_enter(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_enter(&Giant, MTX_DEF);
#if defined(I586_CPU) && !defined(NO_F00F_HACK)
restart:
@@ -639,7 +640,8 @@ restart:
user:
userret(p, &frame, sticks, 1);
out:
- mtx_exit(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_exit(&Giant, MTX_DEF);
}
#ifdef notyet
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c
index f32dfaeeddc0..d49327fa9816 100644
--- a/sys/kern/subr_trap.c
+++ b/sys/kern/subr_trap.c
@@ -279,7 +279,8 @@ trap(frame)
enable_intr();
}
- mtx_enter(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_enter(&Giant, MTX_DEF);
#if defined(I586_CPU) && !defined(NO_F00F_HACK)
restart:
@@ -639,7 +640,8 @@ restart:
user:
userret(p, &frame, sticks, 1);
out:
- mtx_exit(&Giant, MTX_DEF);
+ if (p != NULL || !cold)
+ mtx_exit(&Giant, MTX_DEF);
}
#ifdef notyet