summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuck, Tony <tony.luck@intel.com>2013-09-03 14:49:49 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-03 15:36:42 -0700
commitd472d9d98b463dd7a04f2bcdeafe4261686ce6ab (patch)
tree05972418a7e71d3e8d5a9c8c8d5e1dc22f013c5b
parent2f01ea908bcf838e815c0124b579513dbda3b8c8 (diff)
downloadlinux-stable-d472d9d98b463dd7a04f2bcdeafe4261686ce6ab.tar.gz
linux-stable-d472d9d98b463dd7a04f2bcdeafe4261686ce6ab.tar.bz2
linux-stable-d472d9d98b463dd7a04f2bcdeafe4261686ce6ab.zip
lockref: Relax in cmpxchg loop
While we are likley to succeed and break out of this loop, it isn't guaranteed. We should be power and thread friendly if we do have to go around for a second (or third, or more) attempt. Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--lib/lockref.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/lockref.c b/lib/lockref.c
index 7819c2d1d315..9d76f404ce9a 100644
--- a/lib/lockref.c
+++ b/lib/lockref.c
@@ -19,6 +19,7 @@
if (likely(old.lock_count == prev.lock_count)) { \
SUCCESS; \
} \
+ cpu_relax(); \
} \
} while (0)