mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-19 06:44:31 +00:00
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
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=111951
|
@ -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 a new issue