diff options
Diffstat (limited to 'kernel/sched.c')
| -rw-r--r-- | kernel/sched.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 41541d79e3c8..09b574e7f4df 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -3865,8 +3865,16 @@ int mutex_spin_on_owner(struct mutex *lock, struct thread_info *owner) | |||
| 3865 | /* | 3865 | /* |
| 3866 | * Owner changed, break to re-assess state. | 3866 | * Owner changed, break to re-assess state. |
| 3867 | */ | 3867 | */ |
| 3868 | if (lock->owner != owner) | 3868 | if (lock->owner != owner) { |
| 3869 | /* | ||
| 3870 | * If the lock has switched to a different owner, | ||
| 3871 | * we likely have heavy contention. Return 0 to quit | ||
| 3872 | * optimistic spinning and not contend further: | ||
| 3873 | */ | ||
| 3874 | if (lock->owner) | ||
| 3875 | return 0; | ||
| 3869 | break; | 3876 | break; |
| 3877 | } | ||
| 3870 | 3878 | ||
| 3871 | /* | 3879 | /* |
| 3872 | * Is that owner really running on that cpu? | 3880 | * Is that owner really running on that cpu? |
