diff options
author | attilio <attilio@FreeBSD.org> | 2007-05-29 18:55:41 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2007-05-29 18:55:41 +0000 |
commit | d5b0dfc29b2a69d2c6ca059947f3aa366b444f61 (patch) | |
tree | 1cf8f92c0776f673efd5bd941767177a609b46b7 /sys/kern/subr_witness.c | |
parent | 410f244e4f5e3ce03031bdfbe54f9e567619511a (diff) | |
download | FreeBSD-src-d5b0dfc29b2a69d2c6ca059947f3aa366b444f61.zip FreeBSD-src-d5b0dfc29b2a69d2c6ca059947f3aa366b444f61.tar.gz |
Fix some problems introduced with the last descriptors tables locking
patch:
- Do the correct test for ldt allocation
- Drop dt_lock just before to call kmem_free (since it acquires blocking
locks inside)
- Solve a deadlock with smp_rendezvous() where other CPU will wait
undefinitively for dt_lock acquisition.
- Add dt_lock in the WITNESS list of spinlocks
While applying these modifies, change the requirement for user_ldt_free()
making that returning without dt_lock held.
Tested by: marcus, tegge
Reviewed by: tegge
Approved by: jeff (mentor)
Diffstat (limited to 'sys/kern/subr_witness.c')
-rw-r--r-- | sys/kern/subr_witness.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c index 1f750e5..6069870 100644 --- a/sys/kern/subr_witness.c +++ b/sys/kern/subr_witness.c @@ -394,6 +394,7 @@ static struct witness_order_list_entry order_lists[] = { { "sio", &lock_class_mtx_spin }, #ifdef __i386__ { "cy", &lock_class_mtx_spin }, + { "descriptor tables", &lock_class_mtx_spin }, #endif { "scc_hwmtx", &lock_class_mtx_spin }, { "uart_hwmtx", &lock_class_mtx_spin }, |