mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
Fix the LK_NOSHARE lockmgr flag interaction with LK_UPGRADE and
LK_DOWNGRADE lock ops. Namely, the ops should be NOP since LK_NOSHARE locks are always exclusive. Reported by: rmacklem Reviewed by: attilio Tested by: pho Approved by: re (kensmith) MFC after: 1 week
This commit is contained in:
parent
abd51cd84a
commit
d0a724c5ea
1 changed files with 12 additions and 2 deletions
|
|
@ -477,8 +477,18 @@ __lockmgr_args(struct lock *lk, u_int flags, struct lock_object *ilk,
|
|||
return (0);
|
||||
}
|
||||
|
||||
if (op == LK_SHARED && (lk->lock_object.lo_flags & LK_NOSHARE))
|
||||
op = LK_EXCLUSIVE;
|
||||
if (lk->lock_object.lo_flags & LK_NOSHARE) {
|
||||
switch (op) {
|
||||
case LK_SHARED:
|
||||
op = LK_EXCLUSIVE;
|
||||
break;
|
||||
case LK_UPGRADE:
|
||||
case LK_DOWNGRADE:
|
||||
_lockmgr_assert(lk, KA_XLOCKED | KA_NOTRECURSED,
|
||||
file, line);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
wakeup_swapper = 0;
|
||||
switch (op) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue