mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 13:38:01 +00:00
DARWIN: Drop afs_event lock before destroying it
On macOS arm64, a lock (lck_mtx_t) must be released (lck_mtx_unlock) before it can be destroyed/freed (lck_mtx_free -> lck_mtx_destroy). If this rules isn't respected, the operating system in question will panic with the following message: panic("lck_mtx_assert(): mutex (%p) not owned", lock); Unfortunately, the current shutdown process of the osi_sleep module doesn't respect this rule. As a result, macOS arm64 panics when the OpenAFS client is shut down/restarted. To fix this problem, release afs_event->lck (EVTLOCK_UNLOCK) before destroying it (EVTLOCK_DESTROY). Change-Id: Ifd39fd99c237c783ed98079573fd4043ebab363b Reviewed-on: https://gerrit.openafs.org/14933 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Mark Vitale <mvitale@sinenomine.net> Tested-by: Mark Vitale <mvitale@sinenomine.net> Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
parent
7cfbb087b9
commit
93b8893599
@ -314,6 +314,7 @@ shutdown_osisleep(void) {
|
|||||||
EVTLOCK_LOCK(evp);
|
EVTLOCK_LOCK(evp);
|
||||||
nevp = evp->next;
|
nevp = evp->next;
|
||||||
if (evp->refcount == 0) {
|
if (evp->refcount == 0) {
|
||||||
|
EVTLOCK_UNLOCK(evp);
|
||||||
EVTLOCK_DESTROY(evp);
|
EVTLOCK_DESTROY(evp);
|
||||||
*pevpp = evp->next;
|
*pevpp = evp->next;
|
||||||
osi_FreeSmallSpace(evp);
|
osi_FreeSmallSpace(evp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user