diff options
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/amd64/amd64/trap.c | 6 | ||||
| -rw-r--r-- | sys/i386/i386/trap.c | 6 | ||||
| -rw-r--r-- | sys/kern/subr_trap.c | 6 |
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 |
