summaryrefslogtreecommitdiff
path: root/lib/lockref.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2019-06-26 12:22:54 +0200
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2019-06-26 12:22:54 +0200
commit355a47ae7ebcf9d605aa809b259d380422e81b8d (patch)
treef42b3196986c7de89a335b4f57384d249f5663e9 /lib/lockref.c
parentb1622cb3be4557fd086831ca7426eafe5f1acc2e (diff)
parent80d42db02b3a5beb8cffba08207adf5f4c525ee3 (diff)
Merge remote-tracking branch 'drm/drm-next' into drm-misc-next-fixes
Some fixes have been accidentally pushed to this, so I cannot fost-forward. Required to pull in the remove-fbcon-notifiers fixes. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Diffstat (limited to 'lib/lockref.c')
-rw-r--r--lib/lockref.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/lockref.c b/lib/lockref.c
index 3d468b53d4c9..5b34bbd3eba8 100644
--- a/lib/lockref.c
+++ b/lib/lockref.c
@@ -9,6 +9,7 @@
* failure case.
*/
#define CMPXCHG_LOOP(CODE, SUCCESS) do { \
+ int retry = 100; \
struct lockref old; \
BUILD_BUG_ON(sizeof(old) != 8); \
old.lock_count = READ_ONCE(lockref->lock_count); \
@@ -21,6 +22,8 @@
if (likely(old.lock_count == prev.lock_count)) { \
SUCCESS; \
} \
+ if (!--retry) \
+ break; \
cpu_relax(); \
} \
} while (0)