Oops, fix the double faults people were seeing with the recent changes to
witness. Sleepable locks such as sx locks always come before all mutexes including Giant. However, the static lock order list placed Giant before the proctree and allproc sx locks. This resulted in witness creating a cycle in its lock order "tree" (real trees don't have cycles) leading to infinite recursion and eventually a double fault. To fix, put Giant after sx locks in the lock order list.
This commit is contained in:
parent
c13dcea6ad
commit
9da590b49b
@ -235,9 +235,9 @@ static struct witness_child_list_entry w_childdata[WITNESS_CHILDCOUNT];
|
||||
static struct lock_list_entry w_locklistdata[LOCK_CHILDCOUNT];
|
||||
|
||||
static struct witness_order_list_entry order_lists[] = {
|
||||
{ "Giant", &lock_class_mtx_sleep },
|
||||
{ "proctree", &lock_class_sx },
|
||||
{ "allproc", &lock_class_sx },
|
||||
{ "Giant", &lock_class_mtx_sleep },
|
||||
{ "filedesc structure", &lock_class_mtx_sleep },
|
||||
{ "pipe mutex", &lock_class_mtx_sleep },
|
||||
{ "sigio lock", &lock_class_mtx_sleep },
|
||||
|
Loading…
Reference in New Issue
Block a user