|
@@ -171,6 +171,13 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
|
|
for (;;) {
|
|
for (;;) {
|
|
struct thread_info *owner;
|
|
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
|
|
* If there's an owner, wait for it to either
|
|
* release the lock or go to sleep.
|
|
* release the lock or go to sleep.
|