OpenBSD: Clean up use of LK_CANRECURSE in call to lockmgr()
authorAntoine Verheijen <apv@ualberta.ca>
Wed, 28 Jan 2015 02:49:04 +0000 (19:49 -0700)
committerBenjamin Kaduk <kaduk@mit.edu>
Thu, 29 Jan 2015 19:34:15 +0000 (14:34 -0500)
commit40d97fa9f0356fce7aec76d69dbacb81eac3db37
treecba95eb629a28dfbd08651051b3ab42b74e667f5
parentd354386b8c6047206800dc52ab82886e23db77ad
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>
src/afs/OBSD/osi_vnodeops.c