mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 07:20:11 +00:00
OpenBSD: Clean up use of LK_CANRECURSE in call to lockmgr()
The LK_CANRECURSE and LK_RECURSEFAIL flags in the call to lockmgr() are mutually exclusive. Previous version of OpenBSD didn't really check well for this but more recent versions look for the conflict and take a kernel panic when they're both set. The OpenBSD kernel module currently just blindly sets the LK_CANRECURSE flag in its call to lockmgr(). This patch changes that behaviour so that it checks to make sure that the LK_RECURSEFAIL flags is not set before it actually applies the LK_CANRECURSE flag. That removes the kernel panics that have started to arise. This behaviour is more consistent with other OpenBSD code that makes use of the LK_CANRECURSE flag. Change-Id: Ie435559f4b88195136e09c6184543861f06257da Reviewed-on: http://gerrit.openafs.org/11699 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Perry Ruiter <pruiter@sinenomine.net> Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
parent
d354386b8c
commit
40d97fa9f0
@ -978,7 +978,9 @@ afs_obsd_lock(void *v)
|
||||
|
||||
if (!vc)
|
||||
panic("afs_obsd_lock: null vcache");
|
||||
return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, VP_INTERLOCK, ap->a_p);
|
||||
return afs_osi_lockmgr(&vc->rwlock,
|
||||
(ap->a_flags & LK_RECURSEFAIL) ? ap->a_flags : ap->a_flags | LK_CANRECURSE,
|
||||
VP_INTERLOCK, ap->a_p);
|
||||
}
|
||||
|
||||
int
|
||||
|
Loading…
Reference in New Issue
Block a user