]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/locks_i386_opt.c
xnu-6153.101.6.tar.gz
[apple/xnu.git] / osfmk / i386 / locks_i386_opt.c
index 5720cf7e22850d1b062b36a96c563704fb6a0537..60fceb2a498470656fcf67316dde034e078843c8 100644 (file)
@@ -248,6 +248,10 @@ lck_mtx_lock_spin_always(
         * well as destroyed mutexes.
         */
 
+       if (state & (LCK_MTX_ILOCKED_MSK | LCK_MTX_SPIN_MSK)) {
+               return lck_mtx_lock_spin_slow(lock);
+       }
+
        /* Note LCK_MTX_SPIN_MSK is set only if LCK_MTX_ILOCKED_MSK is set */
        prev = state & ~(LCK_MTX_ILOCKED_MSK | LCK_MTX_MLOCKED_MSK);
        state = prev | LCK_MTX_ILOCKED_MSK | LCK_MTX_SPIN_MSK;