MFC r196592:
Fix a LOR between allprison_lock and vnode locks by releasing allprison_lock before releasing a prison's root vnode. PR: kern/138004 Reviewed by: kib Approved by: re (rwatson), bz (mentor)
This commit is contained in:
parent
ee1db5ae45
commit
f37b0a3db5
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/stable/8/; revision=196699
@ -2453,7 +2453,7 @@ prison_deref(struct prison *pr, int flags)
|
||||
ppr = pr->pr_parent;
|
||||
for (tpr = ppr; tpr != NULL; tpr = tpr->pr_parent)
|
||||
tpr->pr_childcount--;
|
||||
sx_downgrade(&allprison_lock);
|
||||
sx_xunlock(&allprison_lock);
|
||||
|
||||
#ifdef VIMAGE
|
||||
if (pr->pr_vnet != ppr->pr_vnet)
|
||||
@ -2479,7 +2479,7 @@ prison_deref(struct prison *pr, int flags)
|
||||
/* Removing a prison frees a reference on its parent. */
|
||||
pr = ppr;
|
||||
mtx_lock(&pr->pr_mtx);
|
||||
flags = PD_DEREF | PD_LIST_SLOCKED;
|
||||
flags = PD_DEREF;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user