diff options
Diffstat (limited to 'kern/sref.c')
-rw-r--r-- | kern/sref.c | 3 |
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; |