mirror of
https://github.com/opnsense/src.git
synced 2026-06-06 15:22:34 -04:00
vn_lock_pair(): allow lkflags1/lkflags2 to be 0 if vp1/vp2 is NULL
It's a bit strange to require the caller to pass contrived lock flags if the corresponding vnode is NULL, simply to appease the assertion that exactly one of LK_SHARED or LK_EXCLUSIVE must be set. On the other hand, we still want to catch cases in which completely bogus or corrupt flags are passed even if the corresponding vnode is NULL. Therefore, specifically allow empty flags for lkflags1/lkflags2 iff the respective vp1/vp2 param is NULL. Reviewed by: kib, olce MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D44046
This commit is contained in:
parent
bdf1587a49
commit
fa26f46dc2
1 changed files with 4 additions and 2 deletions
|
|
@ -4101,9 +4101,11 @@ vn_lock_pair(struct vnode *vp1, bool vp1_locked, int lkflags1,
|
|||
{
|
||||
int error, locked1;
|
||||
|
||||
MPASS(((lkflags1 & LK_SHARED) != 0) ^ ((lkflags1 & LK_EXCLUSIVE) != 0));
|
||||
MPASS((((lkflags1 & LK_SHARED) != 0) ^ ((lkflags1 & LK_EXCLUSIVE) != 0)) ||
|
||||
(vp1 == NULL && lkflags1 == 0));
|
||||
MPASS((lkflags1 & ~(LK_SHARED | LK_EXCLUSIVE | LK_NODDLKTREAT)) == 0);
|
||||
MPASS(((lkflags2 & LK_SHARED) != 0) ^ ((lkflags2 & LK_EXCLUSIVE) != 0));
|
||||
MPASS((((lkflags2 & LK_SHARED) != 0) ^ ((lkflags2 & LK_EXCLUSIVE) != 0)) ||
|
||||
(vp2 == NULL && lkflags2 == 0));
|
||||
MPASS((lkflags2 & ~(LK_SHARED | LK_EXCLUSIVE | LK_NODDLKTREAT)) == 0);
|
||||
|
||||
if (vp1 == NULL && vp2 == NULL)
|
||||
|
|
|
|||
Loading…
Reference in a new issue