mutex: Fix optimistic spinning vs. BKL
[pandora-kernel.git] / kernel / mutex.c
index 632f04c..4c0b7b3 100644 (file)
@@ -171,6 +171,13 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
        for (;;) {
                struct thread_info *owner;
 
+               /*
+                * If we own the BKL, then don't spin. The owner of
+                * the mutex might be waiting on us to release the BKL.
+                */
+               if (unlikely(current->lock_depth >= 0))
+                       break;
+
                /*
                 * If there's an owner, wait for it to either
                 * release the lock or go to sleep.