Lines Matching defs:ref
77 * if (atomic_add_negative(-1, &ref->refcnt))
78 * succeeds-> atomic_cmpxchg(&ref->refcnt, NOREF, DEAD);
80 * atomic_add_negative(1, &ref->refcnt); <- Elevates refcount to DEAD + 1
110 * // ref->refcnt = ONEREF
111 * if (!atomic_add_negative(-1, &ref->refcnt))
114 * // ref->refcnt == NOREF
116 * // Elevates ref->refcnt to ONEREF
117 * if (!atomic_add_negative(1, &ref->refcnt))
120 * if (put(&p->ref)) { <-- Succeeds
127 * atomic_cmpxchg(&ref->refcnt, NOREF, DEAD); <- UAF
182 * @ref: Pointer to the reference count
192 bool rcuref_get_slowpath(rcuref_t *ref)
194 unsigned int cnt = atomic_read(&ref->refcnt);
202 atomic_set(&ref->refcnt, RCUREF_DEAD);
215 atomic_set(&ref->refcnt, RCUREF_SATURATED);
222 * @ref: Pointer to the reference count
236 bool rcuref_put_slowpath(rcuref_t *ref)
238 unsigned int cnt = atomic_read(&ref->refcnt);
251 if (!atomic_try_cmpxchg_release(&ref->refcnt, &cnt, RCUREF_DEAD))
268 atomic_set(&ref->refcnt, RCUREF_DEAD);
278 atomic_set(&ref->refcnt, RCUREF_SATURATED);