summaryrefslogtreecommitdiff
path: root/kern/sref.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/sref.c')
-rw-r--r--kern/sref.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/kern/sref.c b/kern/sref.c
index 9c49a42..5cb6620 100644
--- a/kern/sref.c
+++ b/kern/sref.c
@@ -288,11 +288,10 @@ sref_weakref_tryget(struct sref_weakref *weakref)
{
uintptr_t addr, oldval, newval;
- /* TODO Review */
do {
addr = atomic_load(&weakref->addr, ATOMIC_RELAXED);
newval = addr & SREF_WEAKREF_MASK;
- oldval = atomic_cas_acquire(&weakref->addr, addr, newval);
+ oldval = atomic_cas(&weakref->addr, addr, newval, ATOMIC_RELAXED);
} while (oldval != addr);
return (struct sref_counter *)newval;